如何从另一个类触发ActionScript 3.0中的自定义事件

cod*_*rex 0 apache-flex events adobe actionscript actionscript-3

我想创建一个自定义事件,任何其他类都可以访问它.假设我有NavigationMenuClass.as其中包含了一些next, prev buttons,而另一个班Page.as应该在每个显示特定网页nextprev按下按钮.我需要创建一个自定义事件(将编写一个EVENTClass.as来管理所有这些事件.)调用"showPage",当这个事件发生时,需要调用Page.as类成员函数.

private function nextPress(event:Event) {
    //dispatchEvent(new Event("showPage"));
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage();
}
Run Code Online (Sandbox Code Playgroud)

在传递对象的情况下,如何使用EventEvent Dispatcher方法调用特定的成员函数.

Jef*_*ser 5

你似乎有点困惑.

那么,你有一个显示层次结构,你的Page.as显示对象是NavigationMenuClass.as的父级,对吗?

您的NavigationMenuClass应该为"next"和"previous"分派事件.Page类应该监听这些事件并做一些事情.

您的代码已经完成了调度部分,尽管已经注释掉了.我会将它放在按钮的单击处理程序中,并使用它来分派下一个或上一个事件:

private function nextPress(event:Event) {
    // dispatchEvent(new Event("showPage"));
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage();
    dispatchEvent(new Event("next"));
}
Run Code Online (Sandbox Code Playgroud)

在您的Page.as中,您只需添加一个事件监听器:

navigationMenuClassInstance.addEventListener('next', onNext);
public function onNext(event:Event):void{
  // write code to change content
}
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的方法来实现上一个事件.解决一些"奇怪的措辞"

我想创建一个自定义事件,任何其他类都可以访问它

我不确定你的意思是什么.
您可以创建一个扩展Event的自定义事件类,任何其他类都可以使用它,只要它导入它即可.我上面的示例不创建自定义事件类,但使用默认事件类.

在调度方面,事件只会发送给它的父母.如果事件冒泡,它将转到它的父母,然后是父母的父母,依此类推,直到舞台上.

在传递对象的情况下,如何使用Event和Event Dispatcher方法调用特定的成员函数.

我不确定你在这里"传递对象"是什么意思.分派事件时,该事件类始终可用作事件侦听器作为该事件侦听器方法的参数.这有点像传递一个物体.