AndEngine如何在onSceneTouchEvent中绘制直线

4

我刚开始接触AndEngine,想要在onSceneTouchEvent中使用手指坐标绘制一条线。我已经尝试了所有我知道的方法,但似乎有些问题阻碍了它的工作,我不知道是什么原因,无法检测到问题 :/

    private Scene scene;
float startX;
float startY;
float lastX;
float lastY;
int lineUsageCount = 0;

@Override
    public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
        switch (pSceneTouchEvent.getAction()) {
        case MotionEvent.ACTION_DOWN:

            startX = pSceneTouchEvent.getX();
            startY = pSceneTouchEvent.getY();
            lineUsageCount = 0 ;

        break;
        case MotionEvent.ACTION_MOVE:

            lineUsageCount++;
            lastX = pSceneTouchEvent.getX();
            lastY = pSceneTouchEvent.getY();

        break;
        case MotionEvent.ACTION_UP:

            if (lineUsageCount <= 5) {
                final Line line = new Line(startX, startY, lastX,
                                lastY, this.getVertexBufferObjectManager());

                line.setLineWidth(1);
                line.setColor(255, 255, 255);
                scene.attachChild(line);

        }

        break;
    }   
    return true;
    }
};

需要先获取起点坐标 startX, startY,在 Action_Move 事件中获取终点坐标 lastX, lastY 并画出线条,但似乎无法正常工作 :|

1个回答

5

问题出在这段代码的这一行:if (lineUsageCount <= 5) { 当你移动手指时,lineUsageCount 的值会远远超过 5。调试这个变量,然后要么将其改为“IF”语句,要么从代码中删除这个“IF”语句。


我移除了If语句,但当我触摸屏幕时应用程序崩溃了... logcat: E/AndroidRuntime(28129): FATAL EXCEPTION: UpdateThread..E/AndroidRuntime(28129): java.lang.NullPointerException @Racoon - Ahmed Ekri
似乎您忘记初始化场景:Scene scene = new Scene(); - Aleksandrs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接