air / as3:有没有办法模拟触摸事件?

时间:2013-12-29 11:22:27

标签: actionscript-3 flex air flex4.5 flex4.6

有没有办法在AIR上模拟TouchEvent?

我正在开发一款手机游戏:当我在手机上运行游戏时,TOUCHEvents可以正常工作。

我想在AIR上测试/调试:有没有办法在AIR上测试它?

此致

3 个答案:

答案 0 :(得分:1)

您可以尝试这种方法,您可以通过侦听MouseEvent.MOUSE_MOVE,MouseEvent.MOUSE_DOWN等添加其他触摸事件支持:

package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.TouchEvent;

    public class TestTouchEvent extends Sprite
    {
        public function TestTouchEvent()
        {
            stage.addEventListener( MouseEvent.CLICK, onClick );
            stage.addEventListener( TouchEvent.TOUCH_TAP, onTap );
        }

        protected function onClick( event : MouseEvent ):void
        {
            event.target.dispatchEvent( new TouchEvent( TouchEvent.TOUCH_TAP ) );
        }

        protected function onTap( event : TouchEvent ):void
        {
            trace("Tap event stuff");
        }
    }
}

答案 1 :(得分:0)

您可以为Touch和Mouse添加事件侦听器,并将它们指向相同的功能。

this.addEventListener("touchBegin", onSomethingDown, false, 0 true);
this.addEventListener("mouseDown", onSomethingDown, false, 0 true);


function onSomethingDown(evt:Event):void
{
    var pointDown:Point;

    if (evt.type == "mouseDown") {
        pointDown.x = MouseEvent(evt).stageX;
        pointDown.y = MouseEvent(evt).stageY;
    } else if (evt.type == "touchBegin") {
        pointDown.x = TouchEvent(evt).stageX;
        pointDown.y = TouchEvent(evt).stageY;
    } 
}

答案 2 :(得分:0)

只需使用MouseEvent代替TouchEvent。没有真正的方法可以使用AIR模拟器来模拟触摸事件(尽管您可以使用官方的Android和iOS模拟器来实现这一点),而不是像已经建议的那样加倍事件监听器,这是您想要避免的(最佳做法是消除尽可能多的事件监听器,特别是在移动设备上。)

根据我的经验,TouchEventMouseEvent提供的利益几乎没有。据我所知,它们可能更精确,但我没有证据支持这一点。它还支持触控笔之类的接近事件。但是,对于大多数应用程序而言,没有任何好处。

MouseEvent适用于所有平台,包括移动设备(移动设备上的触摸也会触发MouseEvent)。因为TouchEventMouseEvent几乎完全相同(即TOUCH_TAPCLICKTOUCH_BEGINMOUSE_DOWN)。我目前在Play商店中有8个AIR应用程序,在iTunes Store中有10个AIR应用程序而没有一个使用TouchEvent,但有些确实使用了多点触控手势。