对于训练,我写的是像'achtung,die kurve'这样的游戏。现在,我只是简单地在屏幕上画出我的“kurve-snake”。转向我使用加速度计(事实上它确实有用)。我的自定义视图有自己的onDraw方法。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint2 = new Paint();
paint2.setAntiAlias(true);
paint2.setStrokeWidth(mPlayer.getLine().getmSize());
paint2.setColor(Color.GREEN);
float x = mPlayer.getLine().getmPosX();
float y = mPlayer.getLine().getmPosY();
mLogic.movePlayer(mBitmapPoint, mPlayer, mSensorY);
canvas.drawLine(x,y,mPlayer.getLine().getmPosX(), mPlayer.getLine().getmPosY(), paint2);
invalidate();
}
它确实可以正常工作,但这样我就无法保持整行(只是它的实际片段)。
我尝试过其他方法:使用bitmap.setpixel(bresenhams alg)绘制线条,然后使用canvas.drawBitmap(...)绘制线条,但它无效。
我也试过了:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint2 = new Paint();
paint2.setAntiAlias(true);
paint2.setStrokeWidth(mPlayer.getLine().getmSize());
paint2.setColor(Color.GREEN);
float x = mPlayer.getLine().getmPosX();
float y = mPlayer.getLine().getmPosY();
mLogic.movePlayer(mBitmapPoint, mPlayer, mSensorY);
canvas.drawLine(x,y,mPlayer.getLine().getmPosX(), mPlayer.getLine().getmPosY(), paint2);
invalidate();
mBitmapPoint = getDrawingCache();
}
但它给出了错误。知道如何实现这个目标吗?
答案 0 :(得分:0)
我认为你需要修改你的绘图代码看起来更像这样:
Point start = myPlayer.getLine().getStartPoint();
for(Point p: myPlayer.getLine().getPoints()) {
if(start == p) {
continue;
}
canvas.drawLine(start.x,start.y,p.x,p.y, paint2);
start = p;
}
你需要创建一个代表你蛇的“关节”的点列表,那里有很多我不会放在这里的代码,但这种方法会为你画出你的线。
答案 1 :(得分:0)