关于矢量影片剪辑转化成位图数据数组的问题

矢量影片转位图数据
本文介绍了一种将矢量影片MovieClip转换为BitmapData数组的方法,解决了因中心点偏差导致的位图动画帧抖动问题。通过获取每个帧的边界并进行取整处理,有效地减少了坐标偏移造成的误差。

将矢量影片MC转化bitmapdata,因为中心点的问题会出现偏差

特别是转化完成后,播放位图动画的时候会出现动画部分帧抖动的误差,这是由于使用矩阵偏移像素的时候坐标并不是整数的缘故

所以暂时的解决办法是获得bounds的坐标后取整,再利用此坐标进行偏移,这样会让误差大大缩小。

/**

* 转换MovieClip为BitmapData数组
* @param mc   目标MovieClip对象
* @return
*
*/
public static function transformM2B(mc:MovieClip):Vector.<SkinInfo>
{
var result:Vector.<SkinInfo> = new Vector.<SkinInfo>();

for (var i:int = 1; i <= mc.totalFrames; i++)
{
var info:SkinInfo = new SkinInfo();
mc.gotoAndStop(i);
var bounds:Rectangle = mc.getBounds(mc);
info.centerX = int(bounds.x);
info.centerY = int(bounds.y);
info.bitmapdata = new BitmapData(bounds.width, bounds.height, true, 0);
info.bitmapdata.draw(mc, new Matrix(1, 0, 0, 1,-info.centerX,-info.centerY));
result.push(info);
}
return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值