访问已在Document Class舞台上的MovieClip实例?

时间:2011-12-15 07:33:59

标签: flash actionscript-3 flash-cs4 movieclip

我已经在flash中创建了一个游戏,由于游戏的本质,我在Flash CS4中手动将许多动画片段放在舞台上。它们不是以编程方式添加为舞台的子项,因此我很难在文档类中访问它们。到目前为止,我能够使用的唯一方法是执行stage.addChild(active_area);(例如),但是有许多影片剪辑,所有影片名称都不相同,所以此方法似乎不正确。

我发现我的MovieClip不是舞台上的孩子,但事实上MainTimeline,就像我for遍历stage.getChildAt(i);时,只有一个孩子,{{1} ,被追踪出来。

如何在文档类的时间轴中访问放置在舞台上的动画片段,而无需手动将它们作为子项添加到舞台中?

[编辑]


所以看起来我的问题不在于我无法访问MovieClip,而是因为我没有修改MovieClips的值,所以我没有在其中注册任何更改。

以下是我修复后的代码:

root1

之前的问题是我正在使用 function manage_cursor(e:Event):void { prevX=currX; prevY=currY; currX=stage.mouseX; currY=stage.mouseY; var i:int; if (currY > (stage.stageHeight/2)) { for (i = 0; i < this.numChildren; i++) { if (this.getChildAt(i).name!="active_area" && stage_kelp.y > kelp.min_y_mod) { this.getChildAt(i).y-=1; } } } if (currY < (stage.stageHeight/2)) { for (i = 0; i < this.numChildren; i++) { if (this.getChildAt(i).name!="active_area" && this.stage_kelp.y < kelp.max_y_mod) { this.getChildAt(i).y+=1; } } } } 检查stage.numChildren;,并修改该子项,即TimeLine。这给了我所有其他MovieClip在舞台上被移动的效果,所以我假设他们的stage.getChildAt(i)值正在改变,但他们不是,因此,我的条件都没有触发,给了我幻觉我无法访问MovieClips。根据以下答案中的包推荐,将y更改为stage,可以解决我的问题。

2 个答案:

答案 0 :(得分:3)

Document Class

中试用此代码
trace(this["movieclip_name"]);

this指的是MainTimeline中的Document Class

答案 1 :(得分:3)

您是否尝试过为ActionScript导出MovieClip并为其指定标识符?在此之后,您通常只需使用标识符即可访问MovieClip。