动作脚本 3 中的 EventDispatcher 错误
EventDispatch error in action script 3
我不确定我的代码是否有问题,或者我是否必须以不同的方式处理错误。我有一个 Gear 实例,另一个是 bLine。我试图在齿轮落在线上时让两者都移动。所以我在实例中编码的是:
var ev2:Event = new Event("transfer");
dispatchEvent(ev2);
stop();
在 bLine 中我有:
`
import flash.events.Event;
this.addEventListener(Event.ENTER_FRAME,Move);
function Move(e:Event):void {
this.x=this.x+3;
};
然后,在主时间线上:
import flash.events.Event;
gear.addEventListener("transfer",transferGear);
function transferGear(e:MouseEvent) {
bLine.gotoAndPlay(2);
};
这是我得到的输出:
“TypeError:错误 #1034:类型强制失败:无法将 flash.events::Event@16bbd6bb7821 转换为 flash.events.MouseEvent。
在 flash.events::EventDispatcher/dispatchEventFunction()
在 flash.events::EventDispatcher/dispatchEvent()
在 Rube2_fla::mc_gear_4/frame24()"
那么我做错了什么,我该如何解决?
您可以更改函数参数:
function transferGear(e:Event) {...}
或者您正在调度的事件class。
new MouseEvent("transfer");
但在这种情况下,您创建了更多不需要的附加字段(例如本地 X)
最理想的情况是,您可以使用自己的事件 class 进行扩展,并使用定义一些自定义静态类型来像这样工作:
gear.addEventListener(MyOwesomeEvent.TRANSFER,transferGear);
您可能还想看看
建议
如果你想做更多高级的东西而不是简单地播放一些动画或点击一个按钮那么我建议安装 some IDE 并将你的代码从你的 .fla
文件中分离出来。
例如Flash开发,当你点击ctrt + shift + 1
时,会自动生成事件监听器代码,所以很难出错。它看起来像这样(未编辑,系统内存不足...:/)。
另外,按照惯例,我们的函数名称从小写字母开始,这样您就可以将它与 class 区分开来。
我不确定我的代码是否有问题,或者我是否必须以不同的方式处理错误。我有一个 Gear 实例,另一个是 bLine。我试图在齿轮落在线上时让两者都移动。所以我在实例中编码的是:
var ev2:Event = new Event("transfer");
dispatchEvent(ev2);
stop();
在 bLine 中我有: `
import flash.events.Event;
this.addEventListener(Event.ENTER_FRAME,Move);
function Move(e:Event):void {
this.x=this.x+3;
};
然后,在主时间线上:
import flash.events.Event;
gear.addEventListener("transfer",transferGear);
function transferGear(e:MouseEvent) {
bLine.gotoAndPlay(2);
};
这是我得到的输出: “TypeError:错误 #1034:类型强制失败:无法将 flash.events::Event@16bbd6bb7821 转换为 flash.events.MouseEvent。 在 flash.events::EventDispatcher/dispatchEventFunction() 在 flash.events::EventDispatcher/dispatchEvent()
在 Rube2_fla::mc_gear_4/frame24()"
那么我做错了什么,我该如何解决?
您可以更改函数参数:
function transferGear(e:Event) {...}
或者您正在调度的事件class。
new MouseEvent("transfer");
但在这种情况下,您创建了更多不需要的附加字段(例如本地 X)
最理想的情况是,您可以使用自己的事件 class 进行扩展,并使用定义一些自定义静态类型来像这样工作:
gear.addEventListener(MyOwesomeEvent.TRANSFER,transferGear);
您可能还想看看
建议
如果你想做更多高级的东西而不是简单地播放一些动画或点击一个按钮那么我建议安装 some IDE 并将你的代码从你的 .fla
文件中分离出来。
例如Flash开发,当你点击ctrt + shift + 1
时,会自动生成事件监听器代码,所以很难出错。它看起来像这样(未编辑,系统内存不足...:/)。
另外,按照惯例,我们的函数名称从小写字母开始,这样您就可以将它与 class 区分开来。