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

Posted

技术标签:

【中文标题】Actionscript 3 - 在 MovieClip 中的帧之间跳转?【英文标题】:Actionscript 3 - jumping between frames in a MovieClip? 【发布时间】:2014-08-02 09:57:12 【问题描述】:

所以我有大约 3 个下午的 actionscript 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。

我知道这是一种非常新奇的方式来表达可能是一个非常简单的概念,但在代码方面我还是个蹒跚学步的孩子,所以...

任何帮助将不胜感激,谢谢!

【问题讨论】:

【参考方案1】:

问题在于您不了解那些听众,并且您在时间轴上的移动以及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) 每秒 30 次。

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

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

【讨论】:

你是英雄。我是个新手,我什至不知道您不需要更改帧的功能。非常感谢! 如果你愿意,你可以接受答案,所以没有悬而未决的问题,因为人们花时间阅读它们,试图帮助你..【参考方案2】:

听起来你不需要任何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();

【讨论】:

以上是关于Actionscript 3 - 在 MovieClip 中的帧之间跳转?的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 在ActionScript中打开相机

将 Actionscript 1 转换为 Actionscript 3

ActionScript 3 AS3 TextField和StyleSheet示例(在ActionScript中创建)

ActionScript 2.0 和 ActionScript 3.0 有啥区别

ActionScript 3 AS3:在ActionScript中使用E4X生成动态XML

在 ActionScript (3.0) 中干净地合并两个数组?