-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;
}