Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3:动态添加的电影剪辑中的操作不起作用_Actionscript 3_Flash_Actionscript_Addchild - Fatal编程技术网

Actionscript 3 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

我在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,它在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不是有功能的电影剪辑。这只是舞台上一部简单的电影。