代码之家  ›  专栏  ›  技术社区  ›  seventeen

Actionscript 3:使用MouseEvent。单击并触摸事件。TOUCH\u轻触

  •  1
  • seventeen  · 技术社区  · 8 年前

    我实施了

    MouseEvent.CLICK 
    

    在我的整个项目中,用于触摸和非触摸设备。我现在正在使用

    TouchEvent.TOUCH_TAP 
    

    因为这在触摸屏上工作得更好。

    但是,这在非触摸设备上不起作用。所以我想使用适合平台的任何一个。我的项目已部署到移动和桌面。

    我希望有一种更好的方式存在,而不是在if语句中覆盖我的项目!

    if (mobile) {
      addEventListener(TouchEvent.TOUCH_TAP, closeClick);
    } else {
      addEventListener(MouseEvent.CLICK, closeClick);
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Kyle Delaney    8 年前

    正如Organi所建议的,我认为定义自己的全局变量是一种很好的方法。如果不必担心何时何地设置变量,也可以使用方法,甚至getter方法,如下所示:

    public class EventConfig
    {
        public static function get clickTap():String
        {
            return mobile ? TouchEvent.TOUCH_TAP : MouseEvent.CLICK;
        }
    

    然后你可以这样听:

    addEventListener(EventConfig.clickTap, myFunc);
    

    但是要小心,确保你的处理函数总是有一个 Event 参数和not MouseEvent 或 TouchEvent ,因为您可能会通过向这些函数传递错误类型的事件而导致无声故障,并且无法捕获这些异常,您很难弄清楚到底发生了什么。

    public function myFunc(e:Event):void
    

    作为补充,如果您有兴趣为触摸屏和鼠标制作单独的构建,您可以研究一下FlashDevelop的 conditional compilation . 您可以有一个编译器常量来指示应该使用哪种事件类型。

    推荐文章