多点触控和Adobe AIR移动版
我正在开发一款使用Adobe AIR 3.0的Android游戏,同时我也使用三星Galaxy S2来测试我的游戏,并且运行得非常好,体面30 fps。多点触控和Adobe AIR移动版
控制游戏,我使用虚拟游戏杆和屏幕上的一些按钮(例如扔武器,跳等)。
但是,似乎多点触控工作不正常,如果我按下一个按钮,并在同一时间,如果我下另一个按钮。第一个停止工作。
这里是代码片段定义了多点触控的行为 -
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
为跳跃键,虚拟摇杆等 - 我使用TouchEvent.TOUCH_BEGIN事件。 请让我知道触摸事件有什么问题。
http://flex.org/tour-de-mobile-flex/值得一试。这对我有帮助。
从MultiTouch.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
import mx.core.UIComponent;
import spark.components.Label;
private var circles:Object = new Object();
</fx:Script>
<fx:Declarations>
<fx:Component className="Circle">
<s:Ellipse width="140" height="140">
<s:fill>
<s:SolidColor color="#ff0000"/>
</s:fill>
</s:Ellipse>
</fx:Component>
</fx:Declarations>
<s:creationComplete>
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
if (Multitouch.supportsTouchEvents)
{
l.text = "maxTouchPoints = " + Multitouch.maxTouchPoints;
addEventListener(TouchEvent.TOUCH_BEGIN, function(event:TouchEvent):void {
var c:Circle = new Circle();
c.x = event.localX - 70;
c.y = event.localY - 70;
addElement(c);
circles[event.touchPointID] = c;
});
addEventListener(TouchEvent.TOUCH_MOVE, function(event:TouchEvent):void {
if (circles[event.touchPointID] != null)
{
circles[event.touchPointID].x = event.localX - 70;
circles[event.touchPointID].y = event.localY - 70;
}
});
addEventListener(TouchEvent.TOUCH_END, function(event:TouchEvent):void {
if (circles[event.touchPointID] != null)
{
removeElement(circles[event.touchPointID]);
delete circles[event.touchPointID];
}
});
addEventListener(TouchEvent.TOUCH_OUT, function(event:TouchEvent):void {
if (circles[event.touchPointID] != null)
{
removeElement(circles[event.touchPointID]);
delete circles[event.touchPointID];
}
});
}
else
{
l.text = "MultiTouch is not supported on this device";
}
</s:creationComplete>
<s:Label id="l" paddingTop="10"/>
</s:Group>
通常,touchPointID
分配给每个触摸事件,并且此touchPointID
将通过它自己的TOUCH_BEGIN,TOUCH_MOVE和TOUCH_END保持一致。如果您最终根据错误的触摸点取消触摸事件,结果可能永远不会发生。请参阅Adobe tuts dealing with touchPointID
。
但是,您必须发布代码以了解真正发生的情况。
还是这个问题不解决,是不是有点像 - 我们不能TOUCH_BEGINE,TOUCH_MOVE TOUCH_END等添加多个事件监听器,我使用3把事件监听,它曾经是我的操纵杆,第二跳按钮,第三跳按钮。 我不确定此多点触控失败的根本原因。 任何输入非常感谢。 谢谢。 – 2012-01-03 02:57:23
@TryTryAgain好吧,让我分手,并找出 - 我的其他控制(即)跳转按钮,暂停按钮和跳转按钮有TOUCH_TAP事件监听器(因为我需要以鼠标点击的方式完全触发这些事件),而我的虚拟手柄按钮有TOUCH_BEGIN和TOUCH_END事件处理程序。我怀疑TOUCH_TAP是否打破了多点触控, – 2012-01-03 03:24:51
您将不得不张贴代码进行测试。 。 。我没有足够的经验去了解我头顶上的解决方案。 – iND 2012-01-03 03:50:36
感谢点,多点触控是为我工作的罚款(和我的测试设备三星Galaxy S2太).- 这里是如何multitouchs一个更详细的停止工作 - 当我按下我的操纵杆,然后跳转按钮,我操纵杆仍能正常工作,但如果按下跳转按钮,然后尝试通过操纵杆移动,游戏杆不会收到多点触控或touch_begin事件。 – 2012-01-02 05:52:16