【发布时间】:2012-01-20 22:34:03
【问题描述】:
我在 Flash 中创建了一个游戏,由于游戏的性质,我在 Flash CS4 中手动放置了许多电影剪辑。它们不是以编程方式作为子级添加到舞台的,因此我很难在文档类中访问它们。到目前为止,我能够使用的唯一方法是做stage.addChild(active_area);(例如),但是有很多电影剪辑,所有的命名都非常不同,所以这种方法似乎不正确。
我发现我的MovieClips 不是舞台的孩子,但实际上MainTimeline,当我for 循环通过stage.getChildAt(i); 时,只有一个孩子root1 被追踪。
如何从文档类访问放置在时间轴中舞台上的影片剪辑,而无需手动将它们作为子级添加到舞台?
[编辑]
所以看起来我的问题不是我无法访问 MovieClip,而是我没有修改 MovieClip 的值,所以我没有在其中注册任何更改。
这是我修复后的代码:
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;,使用stage.getChildAt(i),并修改那个孩子,也就是时间线。这给了我舞台上所有其他 MovieClip 被移动的效果,所以我假设它们的 y 值正在改变,但它们没有,因此,我的条件都没有触发,给我一种错觉我无法访问 MovieClips。按照下面答案中的包的建议,将stage 更改为this,为我解决了这个问题。
【问题讨论】:
标签: flash actionscript-3 flash-cs4 movieclip