尝试在半像素上滚动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
时再次不动。有什么想法吗?
答案 0 :(得分:1)
使用您正在使用的方法无法获得平滑的半像素滚动。但我已经开发了两种使用变换矩阵的替代方案,它们非常有效。
以下是两种不同的滚动方法:
此方法将单个图像滚动到其极限。 http://plasticsturgeon.com/2010/11/super-fast-scrolling-of-huge-bitmaps/
此方法无限滚动平铺图像。 http://plasticsturgeon.com/2010/06/infinite-scrolling-bitmap-backgrounds-in-as3/
链接上提供的工作演示,说明和完整的可下载源代码