0

我正在尝试使用 Flex(在浏览器中运行)创建一个非常简单的图像动画,该动画在屏幕上水平移动 300 像素。我发现动画非常不稳定。每次我运行动画,结果都不一样。有时动画会在出现断断续续之前播放几秒钟,有时会立即出现。这已在 Internet Explorer 和 Firefox 中的多台 Windows 7 机器上进行了测试。

我尝试了几种不同的方法,但似乎没有一种方法可以阻止波动/抖动。

方法 1:使用 s:move

<fx:Declarations>
<s:Power id="_powerEasing" exponent="1" />
<s:Move id="_moveRight" target="{_sword}" xFrom="{_swordMin}" xTo="{_swordMax}"
                duration="1000"
                easer="{powerEasing}" />
</fx:Declarations>

<s:BitmapImage id="_sword" visible="true" scaleX=".99" scaleY=".99"
    source="@Embed('/assets/images/combat2/attackbar/sword.png')" x="0" y="0" />

使用 _moveRight.play(); 调用

我尝试的第二种方法是在每个输入帧上移动图像对象。图像的新 x 位置是通过将时间差乘以速度来计算的。看起来像这样:

var now:Number = getTimer();
var toMove:Number = ((now - _lastTime) / 1000) * _speed;
_sword.x += toMove;
_lastTime = now;

尝试的第三种也是最后一种方法是在 Flash 中将其创建为影片剪辑。这也很波涛汹涌。

最好的结果是接近 1。

我已经尝试过使用 s:BitmapImage、mx:Image 以及使用 FlexSprite,但我开始认为我必须缺少一些东西才能使这一切顺利进行。

我遗漏的任何想法或最佳实践将有助于此动画吗?

编辑:感谢所有建议,但没有任何效果。

这是一个简单的例子。我已启用查看源代码,因此您可以查看实现。http://legionofderp.com/sword-demo/SwordTestDemo.swf

一开始它可能会平稳运行几秒钟,但随后动画开始运行非常不稳定

编辑 2:这是另一个示例,这个示例是使用 Flash 创建的。 http://legionofderp.com/testing-sword-03.swf

回答 感谢大家的所有建议。通过将 html 模板中的 wmode 参数设置为 direct,我能够使动画顺利运行。

4

2 回答 2

0

当它抖动时动画移动真的很慢(每次迭代<1px移动)?如果是这样,您可能想尝试将位图上的 pixelSnapping 属性强制为 NEVER。

此外,您是否尝试过切换 CPU 或 GPU 加速 - 如果是,结果是否相同?

在独立的 Flash 播放器中运行是否会产生相同的效果?

编辑:刚刚注意到您添加了应该覆盖像素捕捉的缩放属性。

于 2012-05-06T16:38:56.893 回答
0

尝试使用 Enterframe 事件而不是计时器(getTimer 或 setInterval)。根据我的经验,我注意到计时器是 CPU 密集型的,因此也会影响动画。虽然 enterFrame 事件运行起来更顺畅。试试看。

addEventListener(Event.ENTER_FRAME , move ) 

function move ( e:Event)
{

  // your animation code here
}
于 2012-05-06T13:22:15.430 回答