2011-12-15 75 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

相關問題