2012-08-25 50 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