Flex/ActionScript の非同期シーケンスに問題があります。次に例を示します。
private function start():void{
_menu = new MyMenu();
_screen.addElement(_menu);
//Here, some Mouse Event Listener to Menu Click
}
ここで、メニューのクリックが発生したと仮定しましょう。
private function menuClick(event:Event):void{
removeMenu();
addMenu(event.SomethingPassedByTheClick);
}
さて、イベント ハンドラのエラーのことは忘れて、プロセスについて考えてみましょう。私の問題は、 addMenu() が removeMenu() の前に終了することがあり、エラーが発生することです。上記のスクリプトは、実際のスクリプトではなく、私の問題を論理的に表現したものです。まず、メソッド addMenu() が呼び出される前に、removeMenu() が完了するまで待機する必要があることを定義できる必要があります。何かご意見は?ご清聴ありがとうございました。
編集:
私の問題のより正確な例:
private function createComplete():void{
_screenArray = new Array(
new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
startUp();
}
private function startUp():void{
//Some mathematical calculations that changes a few 0 to 1's.
addNewComponent();
}
private function addNewComponent():void{
removeAllComponents();
//More calculus on the array in order to create a component in vague space.
addComponentOnCalculatedArea(x, y);
//here is my problem: Sometimes, add Method is called before the removeAllComponents, which causes the new added component be removed by the removeAllComponents() method.
}
みんな、ありがとう。前提が間違っていました。呼び出されるメソッドの順序ではなく、私の数学の計算が間違っていたのは何ですか。スクリプトの各メソッドに trace() を追加することで気づきました。