萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> ios >> iOS Game 模板中坐標問題

iOS Game 模板中坐標問題

   iOS Game一般屏幕都是橫著的,那麼當屏幕豎著的時候會發生什麼。杯具發生了,坐標發生問題了。

  當橫屏時坐標原點為左下角(以下都在Game模板下),此時的大小為1024*768,而這個大小與iPad Air的大小相同,為什麼是這個大小呢(也許蘋果公司希望我們人手一個ipad來玩游戲,而不是拿著手機)。當你使用其他尺寸的設備時(比如iPhone),scene的size並未發生改變,這意味著什麼?也就是說,當你在scene中創建一個100*100的正方形的時候,它顯示在屏幕上確是一個長方形。

  好的,接下來來到我們的正題——當屏幕豎著的時候發生什麼了。好的,我在GameScene類中添加以下代碼

iOS Game 模板中坐標問題 三聯

  這段函數能夠輸出在屏幕中觸摸點的坐標

  我依次觸摸左下角、左上角、右下角、右上角(我使用5s的模擬器)輸出坐標如下

  發現了嗎?最左邊的坐標並不是從0開始,height也不是想象中的1024,到底發生什麼了?我們可以看到寬的坐標大概從 297開始到727結束,而高則是從0到768。對於高我們很容易理解,是原本橫屏時的高拉伸到豎屏的高,這很容易理解,在Game模板中高就是768個point(點)(類似概念),也許在橫屏時一個點代表一個像素,而豎屏時一個點代表兩個像素。那麼既然高是拉伸的話,寬就是把點壓縮了吧,但是我們殘忍的發現不是的!!寬的左下角x坐標並不是從0開始,而是大概從297開始。這是為什麼呢,我再次驗證了橫屏時的坐標點

  依次左下角、左上角、右下角、右上角

  果然發現問題了,寬的坐標是從0到1024這沒有問題,但是高的坐標則是從97到668。這到底是為什麼?(我也不知道~~~~~~~~~~~)

  總結一下:橫屏時的寬對應豎屏時的高,這沒有問題。而橫屏時的高和豎屏時的寬則超出屏幕。具體為什麼,也許和設計模式有關吧,若是有大神看到此文章,又恰好知道這個問題,一定請不吝賜教。

  那麼如何解決這個問題呢,也就是使寬變成從0到1024,而高變成從0到768。我的辦法是當進入GameScene時瞬間進入另一個Scene,而將另一個Scene的size設置成self.size。在工程中新建一個類,類繼承自SKScene,起名為PlayScene,然後在GameScnene中寫下以下代碼

  那麼當你進入GameScene後瞬間又轉到PlayScene中,而PlayScene的坐標則是從0—1024,0-768。

copyright © 萬盛學電腦網 all rights reserved