2011-12-09 47 views
0

カスタムイベントを作成しました。これはカスタムコンポーネントから発生しました。ビュースタックの選択されたインデックスを変更するには、メインアプリケーションでキャッチする必要があります。 しかし、これはうまくいかず、理由を理解できません。カスタムイベントが機能しない

これは私のカスタムイベントである:

package events 
{ 
    import flash.events.Event; 

    public class ChangeSelectedIndex extends Event 
    { 
     public static var index_passed:String = "Index passed"; 
     private var index:int; 

     public function ChangeSelectedIndex(i:int, type:String, bubbles:Boolean=false, cancelable:Boolean=false) 
     { 
      super(type,bubbles, cancelable); 
      index = i; 
     } 

     public function get getIndex():int 
     { 
      return index; 
     } 
    } 
} 

これは私がイベントを発生する方法である:

protected function checkUsernameExistsDbSucces(event:ResultEvent):void 
{ 
    dispatchEvent(new ChangeSelectedIndex(1,ChangeSelectedIndex.index_passed,false,false)); 
} 

そして、これは、イベントをキャッチする私の関数である:で

private function changeSelectedIndexHandler(event:ChangeSelectedIndex):void 
{ 
    mainViewStack.selectedIndex = event.getIndex; 
} 
+0

'checkUsernameExistsDbSucces'が呼び出されたことは確かですか?あなたはコールをトレースしようとしましたか? –

+0

イベントリスナーはどこに追加しますか?イベントがまったくキャッチされない場合は、イベントをディスパッチせず(関数が呼び出されていない)、間違ったイベントディスパッチャを聴いたり、イベントがバブリングする必要があります。 – weltraumpirat

+0

@JohnGiotta:はい、これは正常に呼び出されます。 – Veltar

答えて

4

イベントが送出されたときにハンドラを呼び出すためには、カスタムコンポにイベントリスナを追加する必要がありますnent。

myCustomComponent.addEventListener (ChangeSelectedIndex.index_passed, changeSelectedIndexHandler); 

この行はそれ以外の場合はエラーがあるでしょう、あなたのハンドラ関数とmyCustomComponent両方と同じ範囲内であることを確認してください。

+0

ありがとう、これはそれをした! – Veltar

関連する問題