我已经通过XML加载了一些图像并附加到名为mc0,mc1,mc2等的动态创建的MovieClip中。
_loader.removeEventListener(ProgressEvent.PROGRESS, onLoadingAction);
count++;
var img:Bitmap = Bitmap(e.target.content);
img.cacheAsBitmap = true;
img.smoothing = true;
img.alpha = 0;
TweenLite.to(MovieClip(my_mc.getChildByName("mc"+count)).addChild(img),1, {alpha:1,ease:Quint.easeIn});
并在ENTER_FRAME
处理程序
for (i=0; i < mc.numChildren; i++)
{
my_mc.getChildAt(i).x -= Math.round((mouseX-stage.stageWidth/2)*.006);
}
Everthing工作正常。但它正在发抖,所以看起来不太好。
如何实现平稳运动?
答案 0 :(得分:5)
我使用的一个解决方案是将(x,y)位置舍入到最接近的整数。无论你是否为你的位图添加了平滑并缓存它,圆角都可以使它感觉不那么波动并且更平滑。
您需要注意的另一件事是图像的尺寸。具有奇数尺寸的图像将不会像具有均匀尺寸的图像一样平滑。在我的博文Flash Smoothing Issue中查看如何解决此问题。
答案 1 :(得分:2)
由于Flash具有可变的帧速率(在某种意义上它会丢帧),因此不应该依赖于帧的输入作为一个动作单元。相反,明确计算经过时间会更明智。
例如,在输入框处理程序中:
var currentTime:Number = (new Date()).time;
for (i=0; i < mc.numChildren; i++)
{
my_mc.getChildAt(i).x -= speed * (currentTime - lastTime); // speed is in px/ms
}
lastTime = currentTime;
您在变量范围内声明变量lastTime
:
var lastTime:Number = (new Date()).time;
我不知道这是否解决了你所谓的“摇晃”,但至少要考虑一下。