我不确定我的代码是否有问题,或者我是否必须以不同的方式处理错误。我有一个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()"
那么我做错了什么以及如何解决它?
答案 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 ......:/。)。
同样按惯例,我们从小写字母开始函数名称,以便您可以将它与类区分开来。