iOS Game一般螢幕都是橫著的,那麼當螢幕豎著的時候會發生什麼。杯具發生了,座標發生問題了。
當橫屏時座標原點為左下角(以下都在Game模板下),此時的大小為1024*768,而這個大小與iPad Air的大小相同,為什麼是這個大小呢(也許蘋果公司希望我們人手一個ipad來玩遊戲,而不是拿著手機)。當你使用其他尺寸的裝置時(比如iPhone),scene的size並未發生改變,這意味著什麼?也就是說,當你在scene中建立一個100*100的正方形的時候,它顯示在螢幕上確是一個長方形。
好的,接下來來到我們的正題——當螢幕豎著的時候發生什麼了。好的,我在GameScene類中添加以下代碼
這段函數能夠輸出在螢幕中觸摸點的座標
我依次觸摸左下角、左上方、右下角、右上方(我使用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。