Flash / ActionScript 3中的特定影片剪辑帧速率

时间:2013-09-03 05:05:14

标签: actionscript-3 flash actionscript

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

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); 
}  

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

3 个答案:

答案 0 :(得分:0)

在您的代码中,您错过了if后的阻止声明 这意味着只会处理if条件后的下一行。

目前还不清楚您的代码的逻辑是什么以及为什么该框应该停留在第50帧,但这里的代码将会生成targetFrame = 0box.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);
    }
}

答案 1 :(得分:0)

box.gotoAndStop(50);

正在开始每一帧 如果你想在targetFrame>时触发它然后使用box.totalFrames:

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

但是,该MovieClip的帧速率仍然与舞台帧速率相同。如果你想改变特定动画的帧速率,你可以每隔2帧播放一次以减少fps,如果你想增加fps,你应该跳过帧但是看起来很迟钝。

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

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

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

答案 2 :(得分: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);
}