Actionscript 3 自定义事件不工作
我创建了一个自定义事件,它是从自定义组件触发的。更改viewstack的selectedindex应该在主应用程序中捕获。 但这不起作用,我也不明白为什么 这是我的自定义活动:Actionscript 3 自定义事件不工作,actionscript-3,apache-flex,actionscript,Actionscript 3,Apache Flex,Actionscript,我创建了一个自定义事件,它是从自定义组件触发的。更改viewstack的selectedindex应该在主应用程序中捕获。 但这不起作用,我也不明白为什么 这是我的自定义活动: package events { import flash.events.Event; public class ChangeSelectedIndex extends Event { public static var index_passed:String = "Index
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;
}
这是我捕捉事件的功能:
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;
}
为了在调度事件时调用处理程序,需要向自定义组件添加事件侦听器
myCustomComponent.addEventListener ( ChangeSelectedIndex.index_passed, changeSelectedIndexHandler);
确保此行与处理程序函数和myCustomComponent在同一范围内,否则将出现错误。为了在调度事件时调用处理程序,需要向自定义组件添加事件侦听器
myCustomComponent.addEventListener ( ChangeSelectedIndex.index_passed, changeSelectedIndexHandler);
确保此行与处理程序函数和myCustomComponent在同一范围内,否则将出现错误。您确定调用了
checkUsernameExistsDbSucces
?您是否尝试跟踪该调用?在哪里添加事件侦听器?如果事件根本没有被捕获,您要么不调度一个(函数没有被调用),要么侦听错误的事件调度器,要么您的事件应该冒泡。@Johngitta:是的,调用成功。@weltraumpirat:我意识到我没有添加eventListener。我应该在哪里做得最好?只是一个旁注:您应该在自定义事件类名中包含单词Event
。现在,您似乎是根据它的功能命名的,而不是根据它是什么命名的。您确定checkusernameexistsbsucces
被调用了吗?您是否尝试跟踪该调用?在哪里添加事件侦听器?如果事件根本没有被捕获,您要么不调度一个(函数没有被调用),要么侦听错误的事件调度器,要么您的事件应该冒泡。@Johngitta:是的,调用成功。@weltraumpirat:我意识到我没有添加eventListener。我应该在哪里做得最好?只是一个旁注:您应该在自定义事件类名中包含单词Event
。现在看来你是根据它的功能来命名的,而不是它是什么。