2016-12-04 51 views
2

我试图隐藏使用循环的舞台上的影片剪辑,但我在发布时遇到以下错误(这只是该概念的一个示例。)ReferenceError:错误#1069:属性box_mc_0

var q; 
for (q = 0; q <= 3; q++) { 
    stage["box_mc_" + q].visible = false; 
} 

错误消息:

ReferenceError: Error #1069: Property box_mc_0 not found on flash.display.Stage and there is no default value. at test_fla::MainTimeline/frame1()

ReferenceError: Error #1069: Property box_mc_0 not found on flash.display.Stage and there is no default value. at test_fla::MainTimeline/frame1()

任何帮助,将不胜感激。

回答

3

你只需要使用this关键字,而不是stage变量:

var q; 
for (q = 1; q <= 3; q++) { 
    this["box_mc_" + q].visible = false; 
} 

的原因很简单,幸福就是对象是MainTimeline对象的儿童,this关键字就指的是哪个这种情况下,他们不是stage的直接子女。
如果您有兴趣了解更多有关其差异的详细信息,请参阅here

+0

非常感谢! –

+0

@MikeP不客气,如果你发现答案有用,它解决了你的问题,请考虑[接受它作为一个答案] :) – someOne

1

这就是舞台的不是真的孩子,

如果你想这样,追查所有阶段的孩子的

for (var i:int =0; i<stage.numChildren; i++) { 
    trace(stage.getChildAt(i).name); 
} 

然后就可以看到stagebox_mc_#这是“根”之间存在中间容器,因为你在我的情况下,通过时间线中添加box_mc_#

所以,正确的电话方式是

var q; 
for (q = 0; q <= 3; q++) { 
    stage.getChildByName("root1")["box_mc_" + q].visible = false; 
} 
+0

_“正确的电话“!! _你有没有测试过你的代码? – someOne

+0

@someOne wt?这是对上述问题的真正答案(带有一些小的错字错误),也不要傻瓜与投票按钮 –

+1

会有**另一个** _ReferenceError,错误#1069_,在您的代码中访问'stage [“root1 “]'你需要用'stage.getChildAt(0)'替换它(不管你的拼写错误!),并且”down vote“按钮可以让这个站点组织起来:) – someOne