2011-08-14 4 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

나는 동의하지 않는다. 일부 게임은 가로로 고정되어있다. 그러나 두 방향 모두에서 게임을 할 수 있다면 그것은 하나의 기능입니다. 그리고 기술적으로 가능하다면, "더 나은 모습"이 둘 모두에서 성취 될 수 있습니다. 최소한 작업/시간/노력에 대한 회전을지지하십시오. "게임은 풍경이어야 함"반사 장님을 따르지 마십시오. 일반적으로 두 가지 방향 지원은 항상 하나보다 낫습니다. 사용자는 그가 좋아하는 것을 선택할 수 있기 때문에 결과적으로 더 행복한 사용자가됩니다. 행복한 사용자는 앱을 더 많이 사용하거나 다른 앱을 구매합니다. –

+0

예, @suri는 가로 모드에만 사용해야한다고 말했습니다. 세로 모드로도 이동할 수 있습니다. 그러나 두 모드에 따라 모든 레이아웃 크기를 설정해야하기 때문에 그래픽을 많이 변경해야합니다. –

답변

0

감사들, 난 그냥 landascaping 모드로 게임을 목표로 할 것이다 : 여기

는 코드입니다. 비록 내가 alextsc 동의하지만, 안드로이드 플랫폼이 세로 모드에서 정확하게 다시 그리지 않는 것처럼 보입니다. 저는 여기에 초보자 용 게시자이기 때문에 이미지를 게시 할 수 없지만이 코드를 실행하면 예외를 확인할 수 있으며 drawRect 메소드와 관련이있는 것처럼 보입니다.

관련 문제