ここでのコードは値を受け取り、bmpX
それらbmpY
を使用して画面上のその場所にビットマップを描画します。これは私が望んでいたとおりに機能しますが、他の描画要素をキャンバスに適用し、それらすべてを同じ量だけ移動させたいため、canvas.translate()
関数を使用して画像の動きを処理したいと思います。canvas.drawBitmap()
方向。
私の質問は、コードのどこに移動してcanvas.drawBitmap()
、最初にキャンバスに描画するだけで、その後いつでも移動できるようにすることcanvas.translate()
ですか? コードをどこに配置しても、 の位置をどれだけ変更しても、描画した時点で画像がフリーズしますcanvas.translate()
。いわばキャンバスに画像を「貼り付ける」ことが可能であり、キャンバスを移動すると、画像も一緒に移動します。
public void run() {
// TODO Auto-generated method stub
while(isRunning) {
if(!surfaceHolder.getSurface().isValid()) {
continue;
}
canvas = surfaceHolder.lockCanvas();
canvas.drawRGB(255, 255, 255);
canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2),
bmpY-(bmp.getHeight()/2), null);
//canvas.translate(bmpX, bmpY);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
私の問題を十分に明確に説明したことを願っています。ありがとう!