2017-04-22 96 views
0

我試圖將圖像(playBtn)置於屏幕中央,下方的代碼更接近右上角。請參閱下面如何將圖像置於屏幕中心

public class FlappyBird extends ApplicationAdapter { 

     Texture img; 
     public static final int WIDTH = 1440; 
     public static final int HEIGHT = 2560; 



    } 

我上面的代碼,我有我的設置寬度&高度,我相信是不這樣做的正確方法。儘管如此,這給了我所需要的值,但我似乎無法與playbth工作,並將其放置在中心

public class MenuState extends State { 
     private Texture background; 
     private Texture playBtn; 


     public MenuState(GameStateManager gsm) { 
      super(gsm); 
      background = new Texture("bg.png"); 
      playBtn = new Texture("playbtn.png"); 
     } 



     @Override 
     public void render(SpriteBatch sb) { 

      sb.begin(); 
      sb.draw(background, 0, 0, FlappyBird.WIDTH, FlappyBird.HEIGHT); 
      //sb.draw(playBtn, (FlappyBird.WIDTH/2) - (playBtn.getWidth()/2), FlappyBird.HEIGHT/2); 
      sb.draw(playBtn,(FlappyBird.WIDTH/2)-(playBtn.getWidth()),FlappyBird.HEIGHT/2); 
      sb.end(); 


     } 
    } 
+0

「不起作用」是什麼意思?它有什麼作用?它應該做什麼呢? – alzee

+0

圖像未位於中央。它更靠右上方 – choman

回答

0

幾乎所有的對象都位於離他們左邊的角落之一。因此,雖然圖像本身似乎未對齊,但它實際上是您居中的圖像的左上角或左下角,具體取決於您的編程語言如何與Y軸配合使用。

我將幾個快速圖表放在一起以獲得更好的視覺表示。 對於這個例子,Y軸向下增加,所以point(0,0)將是窗口的左上角而不是左下角。

假設你有一個200px寬,100px高的窗口,並且你有一個20px乘20px的對象,你想放在窗口的正中央。一般的假設是將物體在窗口的寬度和高度的一半,但這樣做會得到你類似這樣的結果:

然而這是一個非常簡單的問題來解決。簡單地定位在窗口寬度的一半減去對象,減去X軸的物體的寬度的一半,並且所述窗口的一半高度的物體的爲Y軸一半高度:

作爲前面提到過,一些編程語言在Y軸向上增加而向下減少的地方有所不同。如果這是你的情況,那麼你將不得不考慮你的對象的左下角而不是他們的左上角,但我相信方程應該是相同的。

相關問題