2017-04-21 28 views
-1

我正在尝试开发该项目,而目前我正在做简单的任务。我想移动一些我在屏幕上绘制的绘图。在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; 

} 

回答

0

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