2011-07-05 3 views
0

私はキャンバスに画像を置くだけで、キャンバスを適切な位置に移動してキャンバスを変更するというサンプルゲームのデモに取り組んでいます。キャンバスをちょうどy軸(上下)に翻訳し、それをx軸上で回転させたいと思います。キャンバスを最初に回転させると、y軸の座標が変化し、x軸で変換が行われます。キャンバスを回転させた後の座標の計算で問題が発生する

私は、キャンバスの回転角度と新しいx、y座標の計算に関する問題を知っていますが、どうやってそれを行うのか分かりません。

これはサンプルコードです:事前にonDraw()メソッド

canvas.rotate(rotateX, imageCenterX, imageCenterY); 
canvas.translate(0,translateY); 

ありがとうで今ゲームビュークラスで

私の活動のクラスで

@Override 
public void onSensorChanged(int sensor, float[] values) { 
    // TODO Auto-generated method stub 

       rotateX = values[0]; 
    translateY = values[1]; 
    Game.setDirection(rotateX,translateY); 
} 

+0

私はblah.draw(キャンバス)が私のために働いていないことを示唆するコードを表示するために、Viewクラスのoverride onDrawメソッドを使用しています。もし私が間違っていたら、私にコードを教えてください。 – user370305

+0

私は私の問題を解決しました。私はcanvas.likeのメソッドをスワップします。canvas.translate(0、translateY); canvas.rotate(rotateX、imageCenterX、imageCenterY);それはうまく動作します。エミアムはあなたの助けに感謝します。 – user370305

答えて

0

私は私の問題を解決しました。

私はちょうどswap the method of canvasです。

canvas.translate(0,translateY); 
canvas.rotate(rotateX, imageCenterX, imageCenterY); 

同様

は、次にそれが正常に動作します。

1

キャンバスへの変更がリセットされないことが原因かもしれません。キャンバスに変更を加える前に(回転など)、canvas.save()を呼び出します。そしてそれらの変更を描画したら、canvas.restore()を呼び出します。このように:

canvas.save(); 
canvas.rotate(foo, bar, sar); 
blah.draw(canvas); 
canvas.restore(); 
+0

+1は助けと助けになります。 – user370305

関連する問題