我实施了
MouseEvent.CLICK
在我的项目中用于触摸和非触摸设备。我现在正在使用
TouchEvent.TOUCH_TAP
因为这在触摸屏上效果更好。
但是,这不适用于非触控设备。所以我想使用适合该平台的任何一个。我的项目已部署到移动和桌面。
我希望有一种更好的方式,而不是用if语句覆盖我的项目!
if (mobile) {
addEventListener(TouchEvent.TOUCH_TAP, closeClick);
} else {
addEventListener(MouseEvent.CLICK, closeClick);
}
答案 0 :(得分:1)
就像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。您可以使用编译器常量来指示应该使用哪种事件类型。