0

我尝试在andengine中绘制手势我创建了这个:

    protected int getLayoutID() {
    return R.layout.gesture;
}

protected int getRenderSurfaceViewID() {
    return R.id.gesture_rendersurfaceview;
}

protected int getGestureOverlayViewID() {
    return R.id.gesture_GestureOverlayView;
}

在 Gesture.xml 我这个:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
>
<org.anddev.andengine.opengl.view.RenderSurfaceView 
                                    android:id="@+id/gesture_rendersurfaceview"
            android:layout_width="240px" 
            android:layout_height="240px"
            android:layout_margin="10px" />

   <org.anddev.andengine.opengl.view.GestureOverlayView 
   android:id="@+id/gesture_GestureOverlayView"
android:layout_width="fill_parent" 
android:layout_height="0dip"
android:layout_weight="1.0" />

 </AbsoluteLayout>

我用这个,通常是标准代码

 mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
    if (!mLibrary.load()) {
        finish();
    }

    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gesture_GestureOverlayView);

    gestures.addOnGesturePerformedListener(this);

但是程序在 GestureOverlayView 手势 = (GestureOverlayView) findViewById(R.id.gesture_GestureOverlayView); 中崩溃,请问如何在 AndEngine 中适应?

4

2 回答 2

1

and-engine 中已经有一个手势检测器类可用

org.andengine.input.touch.detector.SurfaceGestureDetectorAdapter

您可以使用它进行滑动检测,但您的要求尚不清楚,但这可能会对您有所帮助。

protected void onCreate(Bundle pSavedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(pSavedInstanceState);

        this.mSGDA = new SurfaceGestureDetectorAdapter(this) {

            @Override
            protected boolean onSingleTap() {
                // onSurfaceGesture("Tap");
                return false;
            }

            @Override
            protected boolean onSwipeDown() {
                onSurfaceGesture("Swipe Down");
                return false;
            }

            @Override
            protected boolean onSwipeLeft() {
                onSurfaceGesture("Swipe Left");
                return false;
            }

            @Override
            protected boolean onSwipeRight() {
                onSurfaceGesture("Swipe Right");
                return false;
            }

            @Override
            protected boolean onSwipeUp() {
                onSurfaceGesture("Swipe Up");
                return false;
            }

            @Override
            protected boolean onDoubleTap() {
                // onSurfaceGesture("Double Tap");
                return false;
            }

        };

        this.mSGDA.setEnabled(true);
}

并注册它

this.mScene.setOnSceneTouchListener(this.mSGDA);

于 2014-01-09T09:44:08.787 回答
0

鉴于您提供的信息相当有限,您的GestureOverlayView构造函数可能已损坏。

于 2013-03-14T17:35:23.493 回答