2008年12月14日日曜日

Flexのコンポーネントの初期化

ActionScriptでコントロールを作成して、
  1. //オブジェクトを生成  
  2. var waitWindow:WaitWindow =new WaitWindow();  
  3. //ラベルを設定  
  4. waitWindow.setLabel(objFile.name);  


という風に処理を行い
newしたコンポーネントに対して処理を行う場合、
newされた側にあるコンポーネントの値にアクセスすると
nullオブジェクトにアクセスする場合があります。

そんなときは

  1. private var myLabel:String = "";  
  2.   
  3. public function setLabel(aLabelText:String):void {  
  4.   myLabel = aLabelText;  
  5.   callLater(setTitle);  
  6. }  
  7.   
  8. private function setTitle():void {  
  9.   displayLabel.text = myLabel;  
  10. }  


として処理を遅らせます。
newしただけでは中にあるDisplayObjectが初期化が行われないのでしょう。
callLater()は表示を再描画時に処理を行うそうなので
処理を遅らせて処理をすることが可能になります。

何度も処理を行うような時に使用するかは。。。わかりませんが
これで初期化はOKです。

0 件のコメント: