Actionscript 3 AS3:动态添加的电影剪辑中的操作不起作用
我在AS3中尝试做一个简单的测试时遇到了一个非常奇怪的问题 在我的第一帧上有两个函数:Actionscript 3 AS3:动态添加的电影剪辑中的操作不起作用,actionscript-3,flash,actionscript,addchild,Actionscript 3,Flash,Actionscript,Addchild,我在AS3中尝试做一个简单的测试时遇到了一个非常奇怪的问题 在我的第一帧上有两个函数: function function1 ():void { trace ('function1 executed'); mc.gotoAndStop (2); function2 (); } function function2 ():void { trace ('function2 executed'); var test_mc:test_lib = new t
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,它在stage中添加了来自库的子电影剪辑
Function1在第60帧的另一个简单电影剪辑中调用,如下所示:
Object(parent).function1 ();
添加的这个儿童电影剪辑只是一个黑色正方形,第一帧上有一个跟踪动作
跟踪操作应该在添加子项后立即生效,但事实并非如此。
但是,如果我删除或注释行mc.gotoAndStop(2)
,跟踪操作将正常工作。如果我在调用函数2后放置mc.gotoAndStop(2)
,它也会起作用
我不明白为什么会这样
这发生在我正在工作的一个更大的项目上,因此我决定在一个新文件上隔离问题,并创建上面的示例。这很奇怪。试着在mc帧2中移动你的函数2 主要时间线:
function function1 ():void {
trace ('function1 executed');
mc.gotoAndStop (2);
}
在mc->第2帧上
trace ('function2 executed');
var test_mc:test_lib = new test_lib ();
addChild (test_mc);
您必须使用
.root
稍微修改mc
中的代码?如果mc是包含两个函数的MovieClip,那么代码显然无法工作,因为在转到和停止(2)之后,您无法再调用function2(),因为function2()在第二帧上不存在。我不知道为什么它不工作,但我知道如何解决这个问题。延迟调用功能2
(例如1毫秒)<代码>设置超时(功能2,1)代码>它工作!奇怪吧?正如我所说,如果我在函数2()之后调用mc.gotoAndStop(2),它也可以工作;我只是想知道为什么会这样。对我来说似乎是个问题,这是一个可能的解决方案。但是我已经可以通过在mc.gotoAndStop(2)之前调用function2()使其工作,正如我所说的。我只是想知道为什么会发生这种情况…mc不是有功能的电影剪辑。这只是舞台上一部简单的电影。