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 参数而不是 MouseEventTouchEvent,因为你可能会通过将错误类型的事件传递给那些功能,将无法捕获这些异常,您将很难弄清楚发生了什么。

public function myFunc(e:Event):void

附带说明一下,如果您有兴趣为触摸屏和鼠标制作单独的版本,您可以查看 FlashDevelop 的 conditional compilation。您可以有一个编译器常量来指示应使用哪种事件类型。