actionscript-3 - 帧平滑代码

标签 actionscript-3 animation

好吧,这可能是我不了解 actionscript 的非常基本的东西,但我似乎无处可去。

我有一些代码可以平滑 ENTER_FRAME 循环中的动画:

private var m_lastTime:Number;
private var clock_speed:Number = 5;
    private function frameLoop(evt:Event):void 
    {
        var currTime:int = getTimer();
        var deltaTime:Number = ( currTime - this.m_lastTime ) * 0.001;
        this.m_lastTime = currTime;
        //trace(deltaTime.toString() + "," + (deltaTime * clock_speed).toString());

        // why you no work?
        var n:Number = clock_speed * deltaTime;
        trace(n);
        mcClockHand.rotation += .18;//  Number(deltaTime * clock_speed);

如您所见,我正在计算帧之间的时间增量,并将其乘以速度常数。我想出了一个数字值并将其追踪到输出窗口。它在 0.14 和 0.19 之间波动,平均为 0.18。

如果我使用该值来抵消时钟指针 MC 的旋转,它永远不会移动。 如果我使用如上所示的常数 0.18,它会以每 30 秒大约 1 圈的速度向右移动。

所以它们都是 Number 类型,跟踪显示它们的值大致相同。为什么一个可以移动 MC 而另一个不能?

感谢您的任何建议!

最佳答案

在您的第一个循环中,deltaTime 的第一次计算结果为 NaN,因为 this.m_lastTime 为空。从那里,您的代码试图增加一个不是数字的对象。一个简单的解决方案是在声明时将 m_lastTime 变量设置为 0:

private var m_lastTime:Number = 0;

更好的解决方案是检查计算结果是否为 NaN 的情况。

var n:Number = clock_speed * deltaTime;
if (isNaN(n)) n = 0;
trace(n);
mcClockHand.rotation += n;//  Number(deltaTime * clock_speed);

关于actionscript-3 - 帧平滑代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8417136/

相关文章:

flash - AS3 色调位图

apache-flex - 是否可以从 SWF 中检索矢量图形?

c - 从中心动画正弦波

swift - 线性 CABasicAnimation 在容器 View 中不是线性执行的

RecyclerView 项目的 Android 动画问题

css - 为什么我的动画不能正确重复?

actionscript-3 - 如何在 Actionscript 3 中构建影片剪辑

apache-flex - 弹性/ ActionScript : Dynamically accessing static var

actionscript-3 - Flash/AS3-预加载或流式嵌入声音

ios - AnimateWithDuration 未按预期工作