2012-09-23 79 views
1

我有一個movieclip,我們可以稱之爲「mc」。在我的「MC」是一個名爲「childta」的textarea組件。我正在用stage.addchild創建「mc」的實例。一切都很好,但是當我添加一行代碼來設置「childta」的文本時,由於代碼在被加載之前被執行,它不會顯示。AS3如何等待子組件加載?

我知道我有代碼的權利,因爲如果我點擊按鈕來設置「childta」的文本,它確實工作。那麼我該如何等待mc.childta被加載?

   var mcPM:PMBox = new PMBox(); 
       pmwaiting = 1; 
       mcPM.name = sendername; 
       stage.addChild(mcPM); 
       mcPM.x = 200; 
       mcPM.y = 200; 
       mcPM.addEventListener(Event.ADDED_TO_STAGE, pmloaded); 
          } 
      while(pmwaiting == 1) { 

      } 
      MovieClip(stage.getChildByName(sendername)).pmsa.addText(dArray[3]); 
      mcPM.removeEventListener(Event.ADDED_TO_STAGE, pmloaded); 
     } 
    } else { 
     //Its chat text, add to window 
     sa.addText(e.data); 
    } 
} 
function pmloaded(Event):void { 
    pmwaiting = 0; 

} 
+0

看到這個答案: http://stackoverflow.com/questions/12504345/as3-cant-set-checkbox-label-need-to - 知道什麼時候它被加載/ 12505059#12505059 – BadFeelingAboutThis

+0

你的while循環將導致一個stackoverflow,雖然也許沒有代碼導致運行時退出它。 'childta'在哪裏?在'mcpm'裏面?如果是這樣,請發佈您的'PMBox'類代碼。此外,你應該在stage.addChild(mcpm)之前添加你的mcpm添加到舞臺監聽器。 – BadFeelingAboutThis

+0

PMBox是一個影片剪輯。用一個文本框這是pmsa是什麼。它是位於http://www.valentin-manthei.de/as3/SmileArea.as的SmileArea我可以設置正常文本字段的文本,但不是笑臉區域。我只能猜測它是在smilearea(pmsa)加載之前發送addtext。我將嘗試現在移動事件監聽器。任何其他建議?一直在這一整天,並感謝你! – Cyrus

回答

1

嘗試監聽 「ADDED_TO_STAGE

childta = new TextArea(); 
childta.addEventListener(Event.ADDED_TO_STAGE,childtaLoaded); 

function childtaLoaded(e:Event):void { 
    //ready to work with 
} 

addChild(childta); 
+0

我添加了上面的代碼仍然沒有運氣。是的,pmwaiting是一個全局變量 – Cyrus

+0

當mcpm(影片剪輯本身)加載時我可以觸發,但是在那種情況下,我仍然得到1009錯誤。 – Cyrus