ビットマップを描画するサーフェス ビュー クラスがあり、画面の中央下部からユーザーが画面をクリックした場所までオブジェクトを起動するのに少し問題があります。以下にコード スニペットを示します onTouch メソッドユーザーが画面に触れてから座標を取得し、run メソッドがビットマップを描画します。岩のビットマップは、画面の下部からタッチが行われた場所に移動するために必要なものです。
public boolean onTouch(View arg0, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
sX = event.getX();
sY = event.getY();
fX = fY = dX = dY = sclX = sclY = aniX = aniY = 0;
break;
case MotionEvent.ACTION_UP:
fX = event.getX();
fY = event.getY();
dX = fX - sX;
dY = fY - sY;
sclX = dX / 30;
sclY = dY / 30;
break;
}
return true;
}
//the code that draws and updates the bitmaps on screen
public void run() {
while (running) {
if (!sh.getSurface().isValid())
continue;
canvas = sh.lockCanvas();
canvas.drawRGB(02, 02, 150);
if (x != 0 && y != 0)
canvas.drawBitmap(cross, x - (cross.getWidth() / 2), y- (cross.getHeight() / 2), null);
canvas.drawBitmap(sling,(canvas.getWidth() / 2) - (sling.getHeight() / 2),canvas.getHeight() - sling.getHeight(), null);
if (fX != 0 && fY != 0) {
canvas.drawBitmap(rock, (canvas.getWidth()/2) - aniX,(canvas.getHeight()- sling.getHeight()) - aniY,null);
}
aniX = aniX + sclX;
aniY = aniY + sclY;
sh.unlockCanvasAndPost(canvas);
}
}