2011-12-15 78 views
1

我在Flash中创建了一个游戏,并且由于游戏的性质,我在Flash CS4中手动放置了很多影片剪辑。它们不是以编程方式添加为舞台上的孩子,因此我无法在文档类中访问它们。到目前为止,我已经能够使用的唯一方法是做stage.addChild(active_area);(例如),但是有很多影片剪辑,所有的命名都非常不同,所以这种方法看起来不正确。访问已在文档类中舞台上的MovieClip实例?

我发现我的影片剪辑不是阶段的孩子,但实际上MainTimeline,因为当我for遍历stage.getChildAt(i);,只有一个孩子,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;,使用stage.getChildAt(i)和修改的孩子,这是时间轴。这给了我舞台上所有其他动画片段被移动的效果,所以我假设他们的y值正在改变,但它们不是,因此,我的条件是没有触发,给我一个幻觉,我没有无法访问影片剪辑。根据以下答案中的建议,将stage更改为this,为我解决了问题。

回答

3

尝试在Document Class此代码:

trace(this["movieclip_name"]); 

thisMainTimelineDocument Class

3

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

+0

我给出了答案,因为他的回答解决了我的问题,但是一旦我开始循环浏览`this.numChildren(i)`而不是`stage.numChildren(i)``,你的答案也起作用了, 。 – BumbleShrimp 2011-12-15 17:31:13

相关问题