Actionscript 3 扩展鼠标事件
我正在开发一个多目标应用程序,场景是我必须使用一些条件编译来获取鼠标和/或触摸事件 所以我在做这样的事情:Actionscript 3 扩展鼠标事件,actionscript-3,actionscript,Actionscript 3,Actionscript,我正在开发一个多目标应用程序,场景是我必须使用一些条件编译来获取鼠标和/或触摸事件 所以我在做这样的事情: package { import flash.display.MovieClip; import fackeClick; public class Main extends MovieClip { public function Main() { stage.addEventListener(fackeClick
package {
import flash.display.MovieClip;
import fackeClick;
public class Main extends MovieClip {
public function Main() {
stage.addEventListener(fackeClick.CLICKS, tryClick);
}
//
private function tryClick(e:fackeClick):void {
trace(e);
}
}
}
扩展:
package {
import flash.events.MouseEvent;
import flash.display.InteractiveObject;
public class fackeClick extends MouseEvent {
public static const CLICKS:String = "click";
public function fackeClick(type:String, bubbles:Boolean = true, cancelable:Boolean = false, localX:Number=0, localY:Number=0, relatedObject:InteractiveObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0)
{
super(eventType, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
}
}
}
然后像这样使用:
package {
import flash.display.MovieClip;
import fackeClick;
public class Main extends MovieClip {
public function Main() {
stage.addEventListener(fackeClick.CLICKS, tryClick);
}
//
private function tryClick(e:fackeClick):void {
trace(e);
}
}
}
此用法会引发运行时错误:
TypeError:错误#1034:类型强制失败:无法转换flash。事件::MouseEvent@31510089点击fackeClick
如果我将私有函数tryClick(e:fackeClick)切换到私有函数tryClick(e:MouseEvent),它会工作。但我确实需要将自定义事件传递给函数
“fackeClick”将是一个用不同包编写的类,扩展鼠标或TouchEvents
拜托,我知道我们可以使用clickevents作为touchevents等。
我处在一个非常特殊的情况下,我真的必须这样做
有什么想法吗?引发的错误是因为您的
传真单击。单击与鼠标事件使用相同的字符串。单击。现在Flash捕捉到了“点击”
,并发送正常的鼠标事件。这与您的fakeClick
类冲突
这就引出了下一个问题,我认为不可能像这样延长这些事件。Flash处理MouseEvent
本身,因此简单地扩展MouseEvent
不会使Flash分派您的自定义事件,而不是真正的MouseEvent
(或TouchEvent
)
有关Flash如何处理“点击”事件的更多(官方)信息,请参阅文档:
不过我也不是百分之百的关注这件事,也许你可以通过在舞台上听MouseEvents和TouchEvents找出一个解决办法,然后发布你自己的活动。它不会很漂亮,但可能会工作。引发的错误是因为您的fackeClick。单击使用与MouseeEvent相同的字符串。单击。现在Flash捕捉到了“点击”
,并发送正常的鼠标事件。这与您的fakeClick
类冲突
这就引出了下一个问题,我认为不可能像这样延长这些事件。Flash处理MouseEvent
本身,因此简单地扩展MouseEvent
不会使Flash分派您的自定义事件,而不是真正的MouseEvent
(或TouchEvent
)
有关Flash如何处理“点击”事件的更多(官方)信息,请参阅文档:
不过我也不是百分之百的关注这件事,也许你可以通过在舞台上听MouseEvents和TouchEvents找出一个解决办法,然后发布你自己的活动。这不会很漂亮,但可能会奏效。非常感谢您的解释。我已经试过几种方法,但都没有成功。我猜这根本不可能像你说的那样。但这真的很烦人。为什么玩家无法转换事件,因为它扩展了mouseevent?我只想用同一个名字,该死的!:)无论如何,非常感谢你的帮助。非常感谢你的解释。我已经试过几种方法,但都没有成功。我猜这根本不可能像你说的那样。但这真的很烦人。为什么玩家无法转换事件,因为它扩展了mouseevent?我只想用同一个名字,该死的!:)无论如何,非常感谢你的帮助。