0

我正在使用此代码,但它无法正常工作。

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event):void

{
    var targetFrame:uint = box.currentFrame + 2;

    if(targetFrame > box.totalFrames) targetFrame = 0;

    box.gotoAndStop(50); 
}  

如果我做错了什么,请告诉我。

4

3 回答 3

0

将 50 更改为变量 targetFrame:

import flash.events.Event;
addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event):void{
    var targetFrame:uint = box.currentFrame + 2;
    if(targetFrame > box.totalFrames) targetFrame = 0;
    box.gotoAndStop(targetFrame);
}
于 2013-09-04T09:24:30.730 回答
0

在您的代码中,您缺少块语句,if 这意味着只会处理条件之后的下一行if

目前尚不清楚您的代码的逻辑是什么以及为什么该框应在第 50 帧处停止,但这里的代码将使targetFrame = 0and box.gotoAndStop(50);

import flash.events.Event;

addEventListener(Event.ENTER_FRAME, enterFrame);

function enterFrame(e:Event):void
{
    var targetFrame:uint = box.currentFrame + 2;

    if(targetFrame > box.totalFrames)
    {
        targetFrame = 0;
        box.gotoAndStop(50);
    }
}
于 2013-09-03T05:42:22.127 回答
0
box.gotoAndStop(50);

如果您希望它在 targetFrame > box.totalFrames 然后使用时触发,则触发每一帧:

if(targetFrame > box.totalFrames) 
{
     targetFrame = 0;
     box.gotoAndStop(50);
}

但该影片剪辑的帧速率仍将与舞台帧速率相同。如果你想改变特定动画的帧率,你可以每 2 帧播放一次以降低 fps,如果你想增加 fps,你应该跳过帧,但这看起来很滞后。

我经常使用计数器变量并将 counter++ 放在 onEnterFrame 函数中。为了降低 fps:

if(counter % 2 == 0)
{
     mc.nextFrame();
}

这样,如果您的舞台 fps 为 30,mc fps 将为 15,因为每个第二帧计数器 % 2 == 0

于 2013-09-03T05:47:42.470 回答