2008年12月14日日曜日

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

ActionScriptでコントロールを作成して、

//オブジェクトを生成
var waitWindow:WaitWindow =new WaitWindow();
//ラベルを設定
waitWindow.setLabel(objFile.name);


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

そんなときは


private var myLabel:String = "";

public function setLabel(aLabelText:String):void {
myLabel = aLabelText;
callLater(setTitle);
}

private function setTitle():void {
displayLabel.text = myLabel;
}


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

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

0 件のコメント: