【发布时间】:2017-03-19 14:16:02
【问题描述】:
我不确定我的代码是否有问题,或者我是否必须以不同的方式处理错误。我有一个 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()"
那么我做错了什么以及如何解决它?
【问题讨论】:
-
尝试
(e:Event)甚至(e:Event = null)而不是(e:MouseEvent)。您的 gear.addEventListener 没有定义鼠标事件,因此稍后无法告知函数transferGear期望输入类型为MouseEvent -
你太棒了,非常感谢。我什至没有注意到!
-
PS:使用
(e:Event = null)的意义在于,即使在不涉及某些事件的时候,您也可以也使用相同的功能。为此,只需随时执行transferGear();以使bLine转到第 2 帧。
标签: actionscript-3 flash