Android中的移动形状

时间:2017-04-21 10:10:19

标签: android

我正在尝试开发项目,目前我正在完成简单的任务。我想移动一些我在屏幕上绘制的图纸。

我的问题是我绘制了一些Rect对象和一个路径,当我执行它时,只是矩形在移动。

当我移动矩形时,在每次执行中删除绘制的矩形并绘制“新的”,但路径不会发生。

很抱歉我的解释不好,这里有一些代码:

   public void run(){

        preparePaint();

        while(CanDraw){

            if ( !surfaceHolder.getSurface().isValid()){
                continue;
            }


            canvas = surfaceHolder.lockCanvas();

            if ( ini == true ){ SenStart(canvas); ini = false;}

             canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);


            rectangle0.set(sensor0.left, sensor0.top, sensor0.right, sensor0.bottom);

            motion();

            canvas.drawRect(rectangle0, red_fill);

            canvas.drawPath(wallpath, red_fill);

            surfaceHolder.unlockCanvasAndPost(canvas);

        }
    }

这是图纸的初始化:

   protected void SenStart(Canvas canvas){

        robot.x1 = getWidth() /2 - 100;
        robot.y1 = getHeight()/2 + 40; 
        robot.x2 = getWidth() /2 - 100;
        robot.y2 = getHeight()/2 -80; 
        robot.x3 = getWidth()/2;
        robot.y3 = getHeight()/2 -140;
        robot.x4 = getWidth() /2 + 100; 
        robot.y4 = getHeight()/2 -80; 
        robot.x5 = getWidth() / 2 + 100;
        robot.y5 = getHeight() / 2 + 40;

        wallpath.moveTo( robot.x1,  robot.y1); // used for first point
        wallpath.lineTo( robot.x2,  robot.y2);
        wallpath.lineTo( robot.x3,  robot.y3);
        wallpath.lineTo( robot.x4,  robot.y4);
        wallpath.lineTo( robot.x5,  robot.y5);
        wallpath.lineTo( robot.x1,  robot.y1); // used for first point

        sensor0.left = getWidth() /2 - 150;
        sensor0.bottom = getHeight()/2 - 20;
        sensor0.right = getWidth()/2 - 130;
        sensor0.top = getHeight()/2;

    }
}

这是我向这些对象添加动作的地方:

private void motion (){

   robot.y1 = robot.y1 -1;
   robot.y2 = robot.y2 -1;
   robot.y3 = robot.y3 -1;
   robot.y4 = robot.y4 -1;
   robot.y5 = robot.y5 -1;

    wallpath.moveTo(robot.x1, robot.y1); // used for first point
    wallpath.lineTo( robot.x2,  robot.y2);
    wallpath.lineTo( robot.x3,  robot.y3);
    wallpath.lineTo( robot.x4,  robot.y4);
    wallpath.lineTo( robot.x5,  robot.y5);
    wallpath.lineTo( robot.x1,  robot.y1); // used for first point

    sensor0.top     = sensor0.top -1;
    sensor0.bottom  = sensor0.bottom -1;

}

1 个答案:

答案 0 :(得分:0)

如果有人需要它,要删除您需要编写的屏幕路径 在你写新点之前nameofthepath.reset()