【问题标题】:How to bind event for MovieClip on the next frame?如何在下一帧为 MovieClip 绑定事件?
【发布时间】:2011-07-26 08:42:17
【问题描述】:

我有一个 Flash 项目 (ActionScript 3),它有几个框架。每个框架都包含一些具有唯一 ID 的唯一控件(按钮、文本输入等)。 我想为这些控件添加事件监听器:

this.gotoAndStop(2);
trace(AddResource); //null !!!
AddResource.addEventListener(MouseEvent.CLICK,AddRes); // Error

我不知道,如何定义时间,何时加载 AddResource,在 gotoAndStop 之后。 我尝试使用 setTimeout - 它有时会起作用并且会产生不必要的延迟。所以在我看来,这是个坏主意。

每个框架都有很多控件,它们将来可能会更改 - 所以,我不想使用这种方式 (Get MovieClip in another frame)。

如果可能,我想将 ActionScript 代码保留在 *.as 文件中,而不是在时间轴上 (flash cs5: when i change frames in a movieclip, event listeners pointed to one object in the previous frame are removed)。

如何解决这个问题?

【问题讨论】:

  • 我不知道该怎么做。我什至想不出办法。使用所有这些控件在代码中构建屏幕(框架)。或者(上帝帮我建议这个)你可能不得不把代码放在框架上,因为你是这样做的。
  • AddResource 是一个按钮,fl.controls.Button

标签: flash actionscript-3 load movieclip


【解决方案1】:

如果我没看错的话,我会看到两个选项。

  1. 为包含所有内容的 MovieClip 创建一个 ENTER_FRAME 侦听器。跟踪您所在的帧号,何时更改,然后您可以添加新的侦听器。当旧的侦听器不再起作用时,这可能会导致内存泄漏。

  2. 让您的事件冒泡到父级 MovieClip,然后由父级 MovieClip 捕获,确定谁实际发送了事件,然后执行正确的操作。

不过,老实说,我会使用 Sprite 来保存每一帧的所有内容(即每帧一个 Sprite),然后更改可见性以模拟播放头的移动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多