AS3 BitmapData复制像素半像素?

时间:2012-02-17 10:09:14

标签: actionscript-3 bitmap bitmapdata

尝试在半像素上滚动BitmapData时遇到问题是我的原始代码

var speed:Number = 1;
_bitmapData.copyPixels(_backgroundParallax, _screenRect, _zeroPoint, null, null, true);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, speed,    _backgroundParallax.height), new Point(_backgroundParallax.width-speed,0), null, null, false);
_backgroundParallax.scroll( (speed*-1) , 0);

一直工作,直到我将var速度更改为.5,这是因为.scroll方法期待int的所以我复制了滚动正在做的尝试并允许.5像素

var speed:Number = 1;
_bitmapData.copyPixels(_backgroundParallax, _screenRect, _zeroPoint, null, null, true);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, speed,    _backgroundParallax.height), new Point(_backgroundParallax.width-speed,0), null, null, false);
_backgroundParallax.copyPixels(_backgroundParallax, new Rectangle(0, 0, _backgroundParallax.width, _backgroundParallax.height), new Point((speed*-1),0), null, null, false);

当速度为1时再次起作用,但当设置为.5

时再次不动。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用您正在使用的方法无法获得平滑的半像素滚动。但我已经开发了两种使用变换矩阵的替代方案,它们非常有效。

以下是两种不同的滚动方法:

此方法将单个图像滚动到其极限。 http://plasticsturgeon.com/2010/11/super-fast-scrolling-of-huge-bitmaps/

此方法无限滚动平铺图像。 http://plasticsturgeon.com/2010/06/infinite-scrolling-bitmap-backgrounds-in-as3/

链接上提供的工作演示,说明和完整的可下载源代码