我目前正在 Eclipse 中使用 Java 为 android 制作游戏。我在屏幕上一次移动多个精灵时遇到问题。这是一些代码,向您展示我到目前为止所做的事情。
这是游戏中线程的运行方法。它调用 onDraw 方法在屏幕上绘制精灵。它们都在扩展 SurfaceView 并实现 Runnable 的类中。
public void run() {
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = getHolder().lockCanvas();
synchronized (getHolder()) {
onDraw(c);
}
} finally {
if (c != null) {
getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS-(System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
Thread.sleep(sleepTime);
else
Thread.sleep(10);
} catch (Exception e) {}
}
}
这里说的是onDraw方法。左下角和右下角有 2 个品格按钮,就像在节奏游戏中一样。而我想要做的是创建一个“badfret”,它将出现在顶部并向下移动。其中一些代码是从其他程序修补在一起的,有些是我自己的。
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.CYAN);
badguy = true;
if(badguy == true){
if(switch_sides = true){
badfret1.move(canvas,30,40);
badfret1.update(canvas);
}
if(switch_sides = false){
badfret2.move(canvas,500,40);
badfret2.update(canvas);
}
}
fret1.update(canvas);
fret2.update(canvas);
}
这是我认为最适合该问题的 badfretSprite 类的代码。badfretSprite 类继承自我制作的更高级别的 Sprite 类。
Bitmap bmp;
int xSpeed = 0;
int ySpeed = 5;
public badfretSprite(GameView gv, int x1, int y1) {
super(gv, x1, y1);
this.bmp = gv.getFret();
}
public void move(Canvas canvas,int xpos,int ypos) {
x = xpos;
y = ypos;
x+=xSpeed;
y+=ySpeed;
canvas.drawBitmap(bmp, x,y, null);
}
所以目前只有一个精灵在顶部创建并且不移动,我设法让它移动但只有一个这样做了。
请询问您是否希望看到任何其他方法或代码片段。
public void update(Canvas canvas) {
move(canvas,xSpeed,ySpeed);
}