歪招!SpriteKit中的裝置尺寸處理
寫在iPhone6S釋出之際!(等著沒事幹!^^)
曾幾何時,Android裝置由於型別繁多,螢幕尺寸不統一成為被批評的原因之一,而iOS裝置,包括iPhone、iPad、iPod Touch,越來越多的裝置型別也出現了不同的螢幕解析度,為開發者帶來了新的挑戰。
當然,現在我們可以使用自動佈局來處理普通的iOS應用,但SpriteKit可能有些不同;近日研究SpriteKit的開發問題,搞出一些歪招,正所謂:不走尋常路也!^^
實際上,在使用SpriteKit開發iOS遊戲時,我們可以只處理三種解析度:
- iPhone4S及更早的iPhone裝置。
- iPhone5及更新的iPhone裝置及相應的iPod Touch。
- iPad裝置。
我們知道, iOS裝置雖然標識的解析度越來越高,但實際上,畫素並沒有變化,而是每個畫素的“點”數在提高;這樣一來,在SpriteKit開發過程中,我們可以只處理畫素,問題就簡單多了。
首先,我們需要幾個變數儲存相關的資料,如下面的程式碼:
#define IPHONE4 1
#define IPHONE5 2
#define IPAD 3
int deviceType;
int screenWidth;
int screenHeight;
然後,我們通過如下面程式碼獲取裝置的尺寸和型別:
CGSize size = [[UIScreen mainScreen] bounds].size;
screenWidth = size.width;
screenHeight = size.height;
if (screenWidth == 480 || screenHeight == 480) {
deviceType = IPHONE4;
}else if (screenWidth == 1024 || screenHeight == 1024){
deviceType = IPAD;
}else{
deviceType = IPHONE5;
}
對於程式碼中的魔數(如480和1024)請不要提意見,這只是針對特殊裝置解析度所做的假設,如,480只存在於iPhone4S及更早的iPhone裝置中(3:2的螢幕,480*320畫素),而1024則是iPad的尺寸(4:3的螢幕,1024*768畫素,不知道iPad Pro會不會保持這個傳統?),其它的尺寸,只當作是16:9(568*320畫素)的螢幕了。
上面的程式碼,可以幫助我們在SpriteKit中有效的處理已存在的iOS裝置型別和解析度問題,而且,只需要處理三種情況。
當然,在初始化場景時,需要做出相應的尺寸設定,如下面的程式碼:
SKView * skView = (SKView *)self.view;
PlayScene *scene = [[PlayScene alloc]initWithSize:CGSizeMake(screenWidth, screenHeight)];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];
閒著沒事寫著玩,歡迎高手來踩!^^
PS. 如果你喜歡俄羅斯方塊遊戲,可以玩玩Element Blocks Free或Element Blocks,多提寶貴意見!^^
相關文章
- Java 處理Pdf尺寸Java
- 關於裸裝置資料的處理
- 一招教會你處理Flutter中的資料Flutter
- 多卡聚合路由裝置在城市應急事件處理中的作用路由事件
- Apple裝置螢幕尺寸和方向APP
- IOS 特定於裝置的開發:處理基本方向iOS
- javascript獲取移動裝置螢幕尺寸的程式碼JavaScript
- js獲取移動裝置最大化時的尺寸JS
- 電腦如何安裝音訊裝置_電腦沒有音訊裝置怎麼處理音訊
- BeanPostProcessor 後置處理器Bean
- SpriteKit 在iOS個版本中的新特性iOS
- APP推廣八大歪招!你有用過這些招數麼?APP
- pcr實驗室全自動廢水處理裝置
- win10驅動未知裝置怎麼辦_win10裝置管理器驅動未知裝置處理方法Win10
- JMeter—後置處理器(十)JMeter
- 一體化汙水處理裝置對現代生活的影響ZVF
- AIX中的裸裝置AI
- 關於iPhone裝置不同顯示尺寸適配的一些方法iPhone
- Spring之後置處理器Spring
- win10系統中顯示無法找到輸出聲音裝置怎麼處理Win10
- ovm安裝過程及中斷處理
- Linux中的主次裝置Linux
- java中的事件處理Java事件
- 影像處理或其他多媒體處理中的值溢位處理
- 縮小資料檔案尺寸報ORA-03297的處理辦法
- 【Spring】Spring後置處理器Spring
- 高通處理器曝高危漏洞,波及全球超9億部安卓裝置安卓
- vmware虛擬機器網路卡裝置名與配置檔案不符的故障處理虛擬機
- 網路處理器與安全裝置的結合提高了安全性(轉)
- Linux裝置樹的傳遞及Kernel中對裝置樹的分析Linux
- win10電腦找不到無線裝置怎麼回事_win10無法找到無線裝置的處理步驟Win10
- Python表格處理模組xlrd在Anaconda中的安裝Python
- 為了刷好評和曝光率,Steam遊戲能想出多少歪招?遊戲
- Win10電腦無法更新提示你的裝置中缺少重要的安全和質量修復怎麼處理Win10
- CSS中的尺寸單位CSS
- java當中的批處理Java
- JDBC當中的批處理JDBC
- Java 中的並行處理Java並行