当使用andengine在线上玩一条线时,我得到一个MethodNotSupportedException

时间:2015-04-16 17:02:23

标签: android exception event-handling line andengine

我正在编写一个使用andengine来布局房间表示的应用程序。我试图通过画一条线并允许用户旋转并将线移动到位来绘制墙。我可以画线并给线一个onAreaTouch监听器。我使用

注册了onAreaTouch
scene.registerTouchArea(line);

当我运行应用程序时,我能够画线。当我去抓住该行并移动它时,应用程序崩溃并提供一个MethodNotSupportedException,如下所示

Logcat错误:

04-16 10:51:41.584: E/AndroidRuntime(5048): FATAL EXCEPTION: UpdateThread
04-16 10:51:41.584: E/AndroidRuntime(5048): org.andengine.util.exception.MethodNotSupportedException
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.entity.primitive.Line.contains(Line.java:242)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:371)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.engine.Engine.onTouchScene(Engine.java:452)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.engine.Engine.onTouchEvent(Engine.java:438)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.input.touch.controller.BaseTouchController$TouchEventRunnablePoolItem.run(BaseTouchController.java:102)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:54)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:1)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.util.adt.pool.PoolUpdateHandler.onUpdate(PoolUpdateHandler.java:88)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.input.touch.controller.BaseTouchController.onUpdate(BaseTouchController.java:62)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.engine.Engine.onUpdate(Engine.java:584)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.engine.Engine.onTickUpdate(Engine.java:548)
04-16 10:51:41.584: E/AndroidRuntime(5048):     at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820)

在下面的代码中,当我触摸该行时,我应该得到“Line Touched !!!!”,但是我收到了MethodNotSupportedException错误。

我的代码

@Override
    public boolean onSceneTouchEvent(final Scene pScene,
        final TouchEvent pSceneTouchEvent) {
switch (pSceneTouchEvent.getAction()) {
        case TouchEvent.ACTION_DOWN:
            prevX = pSceneTouchEvent.getX();
            prevY = pSceneTouchEvent.getY();
            break;
        case TouchEvent.ACTION_MOVE:
            currentX = pSceneTouchEvent.getX();
            currentY = pSceneTouchEvent.getY();
            break;
        case TouchEvent.ACTION_UP:
            Line line = new Line(prevX, prevY, currentX, currentY, WALL_WIDTH,
                    getVertexBufferObjectManager()) {
                boolean mWallGrabbed = false;

                @Override
                public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
                        float pTouchAreaLocalX, float pTouchAreaLocalY) {

                    Log.i(TAG, "Line Touched!!!!");

                    return true;
                }
            };
            mScene.registerTouchArea(line);
            mScene.attachChild(line);
            break;
        default:
            break;
        }

        return true;
 }

我已经在网上寻找解决方案,但似乎以前没有人这样做过。我找不到任何可以解决这个问题的东西。如果有解决方案,请告诉我。如果没有解决方案,有更好的方法来实现这个目标吗?

0 个答案:

没有答案