有没有办法在AIR上模拟TouchEvent?
我正在开发一款手机游戏:当我在手机上运行游戏时,TOUCHEvents可以正常工作。
我想在AIR上测试/调试:有没有办法在AIR上测试它?
此致
答案 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模拟器来实现这一点),而不是像已经建议的那样加倍事件监听器,这是您想要避免的(最佳做法是消除尽可能多的事件监听器,特别是在移动设备上。)
根据我的经验,TouchEvent
比MouseEvent
提供的利益几乎没有。据我所知,它们可能更精确,但我没有证据支持这一点。它还支持触控笔之类的接近事件。但是,对于大多数应用程序而言,没有任何好处。
MouseEvent
适用于所有平台,包括移动设备(移动设备上的触摸也会触发MouseEvent
)。因为TouchEvent
与MouseEvent
几乎完全相同(即TOUCH_TAP
到CLICK
,TOUCH_BEGIN
到MOUSE_DOWN
)。我目前在Play商店中有8个AIR应用程序,在iTunes Store中有10个AIR应用程序而没有一个使用TouchEvent
,但有些确实使用了多点触控手势。