0

私は Android 用のゲームを作成しようとしています。複数の解像度を扱うときに問題があります。これは私のゲームビューの例です: http://oi42.tinypic.com/vh6ir6.jpg

小さなエリアにはいくつかの情報があり、最大のエリアは私の遊び場です。私の目的は、画像 (ビットマップ) が再生領域の端を超えないようにすることです。これは部分的に機能していますが、800x432 の解像度 (私のタブレット xD の解像度) でのみ機能します。

これは私のコードです:

case MotionEvent.ACTION_MOVE:

    //left edge

                        if (deltaX <= 90 && deltaY <= 400 && deltaY >28){
                        Static_PositionX = 52;
                            Static_PositionY = (int)deltaY-35;
                            Drag = false;
                        }
//down edge
                        else if (deltaY >= 380 && deltaX > 90 && deltaX <770) { 
                          Static_PositionX =  (int)deltaX-42;
                          Static_PositionY = 360;
                          Drag = false;
//right edge
                         }else  if((deltaY <= 390 && deltaY > 20) && deltaX > 770){
                             Static_PositionX =723;
                            Static_PositionY = (int)deltaY-35;
                          Drag = false;

                         }
// up edge
                         else if ((deltaX >= 90 && deltaX < 770) && deltaY <= 35 ){
                            Static_PositionX =(int)deltaX-42;
                                Static_PositionY = 0;
                             Drag = false;

                    }

ここで、deltaX と deltaY は画像座標であり、Static_PositionX/Static_PositionY はランダムな開始位置です

deltaX=event.getX();
deltaY=event.getY();
4

2 に答える 2

1

画面の寸法に絶対数を使用するのをやめます。

現在のデバイスでそれらを取得する方法については、SO のこちらの回答参照してください。

于 2013-06-27T20:20:32.503 に答える
0

特定の解像度向けにゲームを設計します。

boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
int frameBufferWidth = isLandscape ? 480 : 320;
int frameBufferHeight = isLandscape ? 320 : 480;
Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
            frameBufferHeight, Config.RGB_565);

Canvas canvas = new Canvas(frameBuffer); // Do all your drawing on frame buffer

実際にグラフィックスを画面に描画するときは、実際のキャンバスにフレーム バッファーを描画します。このようにして、さまざまな画面のすべてのスケーリングが処理されます。

Canvas canvas = holder.lockCanvas();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(framebuffer, null, dstRect, null);                           
holder.unlockCanvasAndPost(canvas);
于 2013-06-27T20:38:32.320 に答える