2011-12-09 34 views
0

我创建了一个自定义事件,它是从自定义组件中触发的。在主应用程序中应该修改Viewstack的选定索引。 但这不起作用,我不明白为什么。自定义事件不起作用

这是我的自定义事件:

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

在为了在调度事件时调用处理程序,需要将事件侦听器添加到自定义组件中新界东北堆填区。

myCustomComponent.addEventListener (ChangeSelectedIndex.index_passed, changeSelectedIndexHandler); 

请确保此行与处理程序函数和myCustomComponent在同一范围内,否则会出现错误。

+0

谢谢,这样做! – Veltar