Actionscript 3 - 在MovieClip中的帧之间跳转?

时间:2014-06-12 06:58:08

标签: actionscript-3 flash events actionscript

所以我有大约3个下午的动作3经验,所以仍然试图理解所有的概念,但这是一个相对简单(我假设)的问题,我不太了解。

在舞台上有一个名为'num'的影片剪辑,里面有三个框架,每个框架上都有数字1,2和3。还有一个名为'nextbtn'的按钮,可以在点击时转到下一帧(在一般时间轴上)。关于'num'的函数是:

function num2 (): void {
   num.gotoAndStop(2);
}

function num3 (): void {
   num.gotoAndStop(3);
}

时间轴的第二帧是代码:

stage.addEventListener(Event.ENTER_FRAME, num2);

在第三帧

stage.addEventListener(Event.ENTER_FRAME, num3);

这是我没有得到的:

这两个事件监听器成功更改了屏幕上的数字,但是如果我在第四帧上使用相同的代码返回到数字2,似乎没有任何事情发生,即使帧正在前进,数字也会保持为3。

我知道这是一种令人难以置信的新方法,可能是一个非常简单的概念,但在代码方面我很小心,所以...

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

问题在于你不了解那些听众,你在时间轴上移动以及移动num MovieClip的帧时会陷入困境。以下是发生的事情:

你在第一帧。你按下某个按钮(nextbtn),主时间轴进入第2帧。有这样的代码:

stage.addEventListener(Event.ENTER_FRAME, num2);

它实际上做的是每个刻度线上的(输入框架)它执行num2功能:

function num2 (): void {
    num.gotoAndStop(2);
}

因此,如果你的.swf以每秒30帧的速度运行,这意味着每秒执行30次num.gotoAndStop(2)。这意味着什么 - 它已经在第2帧已经停止了。我不知道是不是一直强迫它去那里停下来。

然后再次按下一步。它转到第3帧。有同样的事情,但num3。基本上它是完全相同的概念 - 将num剪辑强制为gotoAndStop(3)每秒三十次。

您只需拨打num.gotoAndStop 一次即可。不要为ENTER_FRAME添加监听器,只需调用num.gotoAndStop(2)(或分别为3),就会发生。

另一个好主意是移动主时间轴或num MovieClip。移动它们有点奇怪..它有效,但正如你所看到的,它会让你犯错误。希望有所帮助:)

答案 1 :(得分:0)

听起来像你不需要任何ENTER_FRAME 无论何时你想去某个框架,只需尝试以下代码:

num.gotoAndStop(2);

如果您在点击按钮后想要使用此代码,请尝试此操作:

back_button.addEventListener(MouseEvent.CLICK, back_clk);
function back_clk(e:MouseEvent):void
{
    prevFrame();
    // for next frame try this ===> nextFrame();
}