我正在使用此代码,但它无法正常工作。
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);
}
如果我做错了,请告诉我。
答案 0 :(得分:0)
在您的代码中,您错过了if
后的阻止声明
这意味着只会处理if
条件后的下一行。
目前还不清楚您的代码的逻辑是什么以及为什么该框应该停留在第50帧,但这里的代码将会生成targetFrame = 0
和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);
}
}
答案 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);
}