2011-08-14 8 views
0

JMEからAndroidにゲームを移植していて、迷惑な問題が見つかりました。次のアクティビティはグリッドを描く必要があります。しかし、グリッドは単に造園モードでOKと表示されます。電話機を縦向き(縦向き)にすると、不思議に圧縮されて表示されます。 メインコードは、セル行を描画するために使用されるメソッドです(getSquareRow) 助けをお寄せいただきありがとうございます。ここで描画モードを画面モード(縦または横)で変更しました

はコードです:

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 

public class TraxActivity extends Activity { 
    InternalView myView; 
    private float shift, di; 
    private float n, minim, redux, side; 
    boolean first = true; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 
     myView = new InternalView(this); 
     setContentView(myView); 
    } 

    private class InternalView extends View{ 
     public InternalView(Context context){ 
      super(context); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      Paint paint = new Paint(); 

      n=5; 
      di=12; 
      int ancho = getWidth(); 
      int alto = getHeight(); 
      minim = Math.min(getWidth(), getHeight()); 
      redux = minim*9/10; 
      shift = (getWidth() - redux)/2; 
      side = redux/n; 

      //background 
      paint.setStyle(Paint.Style.FILL); 
      paint.setColor(Color.BLUE); 
      canvas.drawPaint(paint); 

      //grid 
      for(int j=0; j < n; j++){ 
       getSquareRow(canvas, j, paint); 
      } 



     } 




     public void getSquareRow(Canvas g, int row, Paint p){ 

      p.setColor(Color.BLACK); 
      p.setStyle(Paint.Style.STROKE); 
      p.setStrokeWidth(10); 

      for(int i=0; i < n; i++){ 
       g.drawRect(shift+i*side, shift+row*side, side, side, p); 
      } 

     } 




    } 
} 
+0

私はゲームがより良い外観のためにLanscapeモードで作られるべきだと思います。したがって、それを風景モードに変更することができます。 –

+0

私は同意しない、いくつかのゲームは風景にロックされています。しかし、あなたが両方の方向であなたのゲームをプレイすることができれば、それは機能です。そして、技術的に可能な限り、「よりよく見える」ことが両方で達成できます。少なくとも作業/時間/努力に対して回転をサポートすることを検討してください。 「ゲームは風景でなければならない」反射盲に従ってはいけません。一般に、2つの方向をサポートすることは、常に1つより優れています。ユーザーは自分が好きなものを選ぶことができ、結局はより幸せなユーザーになるからです。また、幸せなユーザーはあなたのアプリにもっと関わったり、あなたから他のアプリを購入したりします。 –

+0

はい、@ suriさんは横長モードにする必要があると言いました。ポートレートモードにも行くことができます。両方のモードに合わせてレイアウトのサイズを設定する必要があるため、グラフィックスに多くの変更を加える必要があります。 –

答えて

0

おかげでみんなが、私はちょうどlandascapingモードのためのゲームをターゲットにすることがあります。私はalextscに同意しますが、この場合、Androidプラットフォームはポートレートモードで正確に再描画されないようです。 私はここに初心者投稿しているので、画像を公開することはできませんが、このコードを実行すると異常を確認でき、drawRectメソッドと関連しているようです。

関連する問題