【发布时间】:2015-05-06 01:14:27
【问题描述】:
我在 AS3 中尝试进行的一个简单测试遇到了一个非常奇怪的问题。
我的第一帧有两个功能:
function function1 ():void {
trace ('function1 executed');
mc.gotoAndStop (2);
function2 ();
}
function function2 ():void {
trace ('function2 executed');
var test_mc:test_lib = new test_lib ();
addChild (test_mc);
}
如您所见,function1 改变了“mc”上的帧,还调用了 function2,它从舞台的库中添加了一个子影片剪辑。
在第 60 帧从另一个简单影片剪辑内部调用 Function1,如下所示:
Object(parent).function1 ();
添加的这个子影片剪辑只是一个黑色方块,在它的第一帧上有一个跟踪动作。
添加孩子后,跟踪操作应该立即起作用,但事实并非如此。
但是,如果我删除或注释 mc.gotoAndStop(2) 行,跟踪操作将正常工作。如果我在调用 function2 之后放置 mc.gotoAndStop(2),它也可以工作。
我不明白为什么会这样。
这发生在我正在工作的一个更大的项目中,因此我决定将问题隔离在一个新文件上,并创建上面的示例。这很奇怪。
【问题讨论】:
-
我不知道为什么它不起作用,但我知道如何解决这个问题。呼叫
function2有延迟(例如 1 毫秒)。setTimeout(function2, 1);有效! -
很奇怪吧?正如我所说,如果我只是在 function2(); 之后调用 mc.gotoAndStop(2) ,它也可以工作。我只是想知道为什么会这样。对我来说似乎是一个错误。
标签: actionscript-3 flash actionscript addchild