2012-08-25 91 views
2

在我正在開發的遊戲中,我需要這個功能:能夠在屏幕上繪製並確定繪圖是否爲確定的形狀(比如矩形,三角形或其他)。手勢識別器和AndEngine(Android)

所以我想用手勢,這是更簡單的方法;用手勢生成器我做了幾個形狀,我用它們作爲模型。事情是,我無法使它與AndEngine一起工作。

我需要GestureOverlayView,它基本上是繪圖板,放置在遊戲場景的頂部,以便我可以看到場景本身以及所有連接的實體,也可以繪製手勢。

現在我試過的東西沒有工作,無論是AndEngine的東西都顯示在屏幕上還是GestureOverlayView都不是兩種。

我是新的android開發和AndEngine,所以我有點卡在這裏...你有什麼想法我怎麼能使它工作?我到處尋找,但我找不到任何有用的東西...

我會留下手勢部分的代碼,例如,如果您沒有任何預先製作的在項目路徑res/raw中的手勢:

public class ProvaGesture extends Activity implements GestureOverlayView.OnGesturePerformedListener   
{ 

    private GestureLibrary gestureLib; 

    public GestureOverlayView gestureOverlayView; 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
      super.onCreate(savedInstanceState); 

      gestureOverlayView = new GestureOverlayView(this); 

      gestureOverlayView.addOnGesturePerformedListener(this); 

      gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures); 

      if (!gestureLib.load()) 
      { 
       finish(); 
      } 

      setContentView(gestureOverlayView); 
     } 


    public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) 
    { 
      ArrayList<Prediction> predictions = gestureLib.recognize(gesture); 

      for (Prediction prediction : predictions) 
      { 
       if (prediction.score > 1.0) 
       { 
         Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show(); 
       } 
      } 
    } 


} 

回答

4

我沒有在您的演示代碼中看到AndEngine部分。您的ProvaGesture活動應從AndEgine的SimpleBaseGameActivityBaseGameActivity延伸,然後執行IOnSceneTouchListener

此基礎上你的想法,我猜你試圖創造出只處理手勢分離重疊視圖,所以你必須考慮:

  • 你只有一個活動同時運行機器人。

  • 如果你想創建一個用戶自定義視圖 overlaping的AndEgine表面看來,你應該看到Andengine的例子:XMLLayoutExample

的解決方案可能是 [建議]:

public class OverlapLayoutExample extends SimpleLayoutGameActivity { 
@Override 
protected int getLayoutID() { 
    //your layout id (xml file in layout folder) 
    return R.layout.overlaplayout; 
} 

@Override 
protected int getRenderSurfaceViewID() 
{ 
    //overlaplayout will contain a SurfaceView with following ID 
    //this surface is where you render Andgine 
    return R.id.overlaplayout_rendersurfaceview; 
} 
} 

不要忘記創建自己的佈局:含surfaceViewOverlayViewoverlaplayout

+0

對不起,我忘了完全地我寫這裏!寫完這幾天後,我發現了你提到的例子,我幾乎設法做我想做的事情;那麼我已經在AndEngine論壇中得到了最後一個提示:andengine.org/forums/post38876.html#p38876 – Beriol

+0

不是它檢測到手勢,但事實證明我現在有另一個問題。我不想使用手勢描邊,而是使用AndEngine(創建線對象)來繪製圖形,但只有部分輸入被註冊;我的意思是它繪製了手勢的一部分,然後停下來,就像是一個ACTION_UP事件而不是一個ACTION_MOVE;所以,我正在考慮使用手勢正常筆畫,但由於AndEngine位於GestureOverlayView的頂部,筆畫是不可見的......有沒有辦法讓它可見? – Beriol

+0

其實從來沒有想過,我設法禁用手勢描邊,現在一切都好了! – Beriol