Actionscript 3:使用 MouseEvent.CLICK 和 TouchEvent.TOUCH_TAP
Actionscript 3: Using MouseEvent.CLICK and TouchEvent.TOUCH_TAP
我实现了
MouseEvent.CLICK
在我的项目中用于触摸和非触摸设备。我现在正在使用
TouchEvent.TOUCH_TAP
因为这在触摸屏上效果更好。
但是,这不适用于非触摸设备。所以我想使用适合平台的任何一个。我的项目部署到移动和桌面。
我希望有更好的方法,而不是在 if 语句中覆盖我的项目!
if (mobile) {
addEventListener(TouchEvent.TOUCH_TAP, closeClick);
} else {
addEventListener(MouseEvent.CLICK, closeClick);
}
正如 Organis 所建议的,我认为定义您自己的全局变量是一个很好的方法。如果可以更轻松地不必担心设置变量的位置和时间,您还可以使用一种方法,甚至是 getter 方法,如下所示:
public class EventConfig
{
public static function get clickTap():String
{
return mobile ? TouchEvent.TOUCH_TAP : MouseEvent.CLICK;
}
那你可以这样听:
addEventListener(EventConfig.clickTap, myFunc);
但要注意,确保你的处理函数总是有一个 Event
参数而不是 MouseEvent
或 TouchEvent
,因为你可能会通过将错误类型的事件传递给那些功能,将无法捕获这些异常,您将很难弄清楚发生了什么。
public function myFunc(e:Event):void
附带说明一下,如果您有兴趣为触摸屏和鼠标制作单独的版本,您可以查看 FlashDevelop 的 conditional compilation。您可以有一个编译器常量来指示应使用哪种事件类型。
我实现了
MouseEvent.CLICK
在我的项目中用于触摸和非触摸设备。我现在正在使用
TouchEvent.TOUCH_TAP
因为这在触摸屏上效果更好。
但是,这不适用于非触摸设备。所以我想使用适合平台的任何一个。我的项目部署到移动和桌面。
我希望有更好的方法,而不是在 if 语句中覆盖我的项目!
if (mobile) {
addEventListener(TouchEvent.TOUCH_TAP, closeClick);
} else {
addEventListener(MouseEvent.CLICK, closeClick);
}
正如 Organis 所建议的,我认为定义您自己的全局变量是一个很好的方法。如果可以更轻松地不必担心设置变量的位置和时间,您还可以使用一种方法,甚至是 getter 方法,如下所示:
public class EventConfig
{
public static function get clickTap():String
{
return mobile ? TouchEvent.TOUCH_TAP : MouseEvent.CLICK;
}
那你可以这样听:
addEventListener(EventConfig.clickTap, myFunc);
但要注意,确保你的处理函数总是有一个 Event
参数而不是 MouseEvent
或 TouchEvent
,因为你可能会通过将错误类型的事件传递给那些功能,将无法捕获这些异常,您将很难弄清楚发生了什么。
public function myFunc(e:Event):void
附带说明一下,如果您有兴趣为触摸屏和鼠标制作单独的版本,您可以查看 FlashDevelop 的 conditional compilation。您可以有一个编译器常量来指示应使用哪种事件类型。