2012-01-02 94 views
1

我正在開發一款使用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事件。 請讓我知道觸摸事件有什麼問題。

回答

0

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> 
+0

感謝點,多點觸控是爲我工作的罰款(和我的測試設備三星Galaxy S2太).- 這裏是如何multitouchs一個更詳細的停止工作 - 當我按下我的操縱桿,然後跳轉按鈕,我操縱桿仍能正常工作,但如果按下跳轉按鈕,然後嘗試通過操縱桿移動,遊戲杆不會收到多點觸控或touch_begin事件。 – 2012-01-02 05:52:16

1

通常,touchPointID分配給每個觸摸事件,並且此touchPointID將通過它自己的TOUCH_BEGIN,TOUCH_MOVE和TOUCH_END保持一致。如果您最終根據錯誤的觸摸點取消觸摸事件,結果可能永遠不會發生。請參閱Adobe tuts dealing with touchPointID

但是,您必須發佈代碼以瞭解真正發生的情況。

+0

還是這個問題不解決,是不是有點像 - 我們不能TOUCH_BEGINE,TOUCH_MOVE TOUCH_END等添加多個事件監聽器,我使用3把事件監聽,它曾經是我的操縱桿,第二跳按鈕,第三跳按鈕。 我不確定此多點觸控失敗的根本原因。 任何輸入非常感謝。 謝謝。 – 2012-01-03 02:57:23

+0

@TryTryAgain好吧,讓我分手,並找出 - 我的其他控制(即)跳轉按鈕,暫停按鈕和跳轉按鈕有TOUCH_TAP事件監聽器(因爲我需要以鼠標點擊的方式完全觸發這些事件),而我的虛擬手柄按鈕有TOUCH_BEGIN和TOUCH_END事件處理程序。我懷疑TOUCH_TAP是否打破了多點觸控, – 2012-01-03 03:24:51

+0

您將不得不張貼代碼進行測試。 。 。我沒有足夠的經驗去了解我頭頂上的解決方案。 – iND 2012-01-03 03:50:36