2011-08-14 2 views
0

Я портирую игру с JME на Android, и я нашел неприятную проблему. Следующее действие должно провести сетку, и на самом деле это происходит. Но сетка выглядит ОК только в режиме ландшафтного дизайна. Когда вы устанавливаете вертикальный телефон (в портретном режиме), он выглядит странно сжатым. Основной код - это метод, используемый для рисования ячеек, (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

Я не согласен, да, некоторые игры заперты в ландшафте. Но если вы можете играть в свою игру в обеих ориентациях, это особенность. И технически возможно, «лучший взгляд» может быть заархивирован в обоих. По крайней мере, подумайте о поддержке вращения против работы/времени /. Не следует, чтобы «игры должны быть пейзажными» рефлекторными слепыми. В общем, поддержка двух ориентаций всегда лучше, чем одна. Потому что у пользователя есть выбор, который ему больше нравится, в результате чего все больше счастливых пользователей. И счастливые пользователи больше взаимодействуют с вашим приложением или покупают у вас другие приложения. –

+0

Да как @suri сказал, что вы должны идти только в режиме ландшафта. Вы можете пойти и в портретном режиме. Но вы должны сделать много изменений в графике, если вы поедете для него, потому что вы должны установить все макеты в соответствии с обоими режимами. –

ответ

0

Спасибо, ребята, я буду предназначаться игру только для режима landascaping. Хотя я согласен с alextsc, но в этом случае выглядит так, что платформа Android точно не перерисовывается в портретном режиме. Я не могу опубликовать изображение, потому что я новичок здесь, но, запустив этот код, вы можете проверить аномалию и, похоже, связан с методом drawRect.

Смежные вопросы