动作脚本3中的EventDispatch错误

时间:2017-03-19 14:16:03

标签: actionscript-3 flash

我不确定我的代码是否有问题,或者我是否必须以不同的方式处理错误。我有一个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()"

那么我做错了什么以及如何解决它?

1 个答案:

答案 0 :(得分:2)

您可以更改功能参数:

function transferGear(e:Event) {...}

或者您要派遣的活动类。

new MouseEvent("transfer");

但是在这种情况下,你正在创造更多你不需要的额外领域(如本地X)

大多数情况下,您会使用自己的方法扩展Event类,并使用定义一些自定义静态类型来实现这样的工作:

gear.addEventListener(MyOwesomeEvent.TRANSFER,transferGear);

您可能还想查看this question

<强>建议

如果您想进行更多高级操作而不是简单地播放动画或点击按钮,我建议安装some IDE并将您的代码与.fla文件分开。

例如,当你点击ctrt + shift + 1时,Flash开发会自动生成事件监听器代码,因此很难出错。它看起来像这样(没有编辑,系统出RAM ......:/。)。

enter image description here

同样按惯例,我们从小写字母开始函数名称,以便您可以将它与类区分开来。