我做了一个门/按钮并添加为一个类,我想要它,所以当你点击它时,它会发送一个事件,指示主要动作脚本页面中的一个功能运行
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Door extends MovieClip {
var direct:String;
var doorId:int;
var dispatcher = new EventDispatcher();
public function Door() {
this.addEventListener(MouseEvent.CLICK, changeRoom)
this.buttonMode = true;
}
function changeRoom(e:MouseEvent):void{
trace("door click")
dispatcher.dispatchEvent( new Event("doorClick") );
}
}
}
主页面如下
var doorTop = new Door();
doorTop.addEventListener("doorClick",goToRoom);
//should i be doing stage.addEventListener("doorClick",goToRoom);
function goToRoom(e:Event):void
{
trace("i went here")
}
我在做错了什么?看起来很直接
答案 0 :(得分:4)
您未从doorTop
发送活动,而是在dispatcher
内从doorTop
发送活动。
Door
扩展MovieClip
,扩展EventDispatcher
。您不需要创建EventDispatcher,您的Door
类已经是一个。
这样做:
function changeRoom(e:MouseEvent):void{
trace("door click")
this.dispatchEvent( new Event("doorClick") );
}
这将从Door
对象发送它。
此外,如果您正在使用类,则在类的顶级范围内声明的每个对象(包括函数)都必须包含访问修饰符(public,private,internal或protected)。您不能只声明function changeRoom
,它必须是public function changeRoom
。与每个变量相同。