定位/访问 AS3 中的硬编码影片剪辑



我正在尝试使AS3代码块与较旧的Flash电影一起使用。由 ~4000 个关键帧组成并定期将静态影片剪辑添加到主时间轴的影片。

在帧 120 上,实例名称为 playButtonMC 的影片剪辑将添加到舞台。 playButtonMC里面有一个名为 playButtonbutton实例。我想从主时间轴将单击事件处理程序分配给此影片剪辑中的按钮,但我无法从主时间轴上的关键帧 # 121 上的操作中获取对影片剪辑的引用。

我尝试了以下操作,但徒劳无功:

var myMc:MovieClip = stage.getChildByName("playButtonMC") as MovieClip;
trace(myMc);
trace(playButtonMC);
trace(root.playButtonMC);
trace(stage.playButtonMC);
// If I get a reference, I plan to do following to attach event listener.
// Please advise if its incorrect as well
myMc.playButton.addEventListener(MouseEvent.CLICK, doStuff);
function doStuff():void{
    trace('called');
}

trace的所有调用都会导致null

我不是任何意义上的Flash开发人员,但我被交给了这个小任务。我知道正确的 AS3 方法必须是动态生成影片剪辑并将引用存储在变量中,但目前,我只是试图让它以某种方式工作。

编辑

trace(stage.playButtonMC);实际上会产生错误ReferenceError: Error #1069: Property playButtonMC not found on flash.display.Stage and there is no default value.

如果您有权访问旧电影的源代码,最简单的方法是为您需要了解的实例添加 getter 和 setter。查看您发布的代码,看起来您可能确实可以访问源代码,但由于某种原因,您使用的是时间线代码而不是文档类。如果你打算使用时间轴代码,你可能只想用按钮把它推到框架上,而不必担心它。

如果你不只是观察ADDED_TO_STAGE(它不会冒泡,所以你需要在捕获阶段观看)并筛选,直到找到你关心的东西。你可以打开name或getQualifiedClassName()或其他一些你想要的条件。

有关这两种技术的概要,您可以阅读此内容。此处的示例代码。

您确定该实例仍然存在吗?

阶段 != 根

使用 root 或使用 this,以防您的 MainTimeline 实例上有代码。绝对不是舞台。

最新更新