最近書已經進入印刷了,預訂簽名的童鞋沒想到會上三位元,非常感謝大家一如既往的支援與鼓勵; 今天為大家介紹利用cocos2d開發中一些細節的三個問題; 首先介紹第一點:如何開啟高清模式,大家都知道iphone4的解析度是960*640,比之前的480*320正好大了一倍,那麼如果想測試在高清模式下的遊戲效果的話,那麼首先大家肯定知道先設定iOS模擬器為iphone(Retina)模式,但是僅僅設定這裡的童鞋肯定會發現問題,因為運行後會發現控制台列印出來的解析度仍然是480*320,這樣設定後只是讓模擬器體積放大一倍,但是解析度照舊沒變,其實這是因為cocos2d引擎的問題,你既然使用cocos2d引擎就應該知道當程式一運行後整個控制權都交給了cocos2d,那麼設定高清模式也應該從cocos2d中進行設定開啟;開啟方法很easy, 首先開啟你的 AppDelegate.m(這裡我用的cocos2d1-1.0.0版本預設建立cocos2d項目自動產生的類);OK,然後手動搜下如下代碼: [cpp] view plaincopy[director enableRetinaDisplay:YES] OK,搜到的代碼完整如下; [cpp] view plaincopy// // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices // if( ! [director enableRetinaDisplay:YES] ) // CCLOG(@"Retina Display Not supported"); 沒錯,這幾行被注釋掉了,OK,將注釋去掉,完成開啟高清模式;將iOS模擬器設定為iphone(Retina),然後再運行一下項目,解析度就成了960*640; OK,緊接著要說圖片適配的問題: 做iOS的童鞋們在iOS4之前都應該沒有所謂適配的概念(拋開ipad不說),那麼如今iOS4出來了,iphone就有了解析度大小之分,那麼程式中所用的圖片也對應需要進行設計;其實apple早已為開發人員考慮到了,所以提供了很方便的方式: 假設你程式中使用了icon.png這張圖,那麼為了能適配所有的機型,那麼你需要在你的項目中為icon.png添加一個高清的版本,@2x,“icon@2x.png”,那麼在程式在iphone4中進行啟動並執行時候就會自動索引@2x的對應圖片,那麼對此Himi要提醒重要的一點: 以上@2x的方式是拋開cocos2d,單單說的iOS的系統API,那麼如果在cocos2d中使用的圖片也類似需要添加一個高清的版本,-hd,“icon-hd.png”;這裡一定不能搞錯; 最近申請IPD可謂困難重重,不過這幾天就應該申請下來了;這幾天裡也購買了一個圖片打包工具“TexturePacker”,做cocos2d的肯定不陌生,沒錯,此編輯器主要的作用就是將大部分圖片打包,省包大小、省運行記憶體、提高運行效率等優點,這裡不詳細介紹,大家可以自行百度下;那麼這裡說下"TexturePacker"有二個很重要的功能,其一是自動為你的圖片打包之餘添加一個@2x或者-hd版本的圖片包提供適配使用,其二是能將圖片打包成pvr、與pvr.ccz格式,相當好用,此工具這裡Himi推薦,$19+ 不算貴;(但是提醒大家購買的時候一定要使用$進行支付,因為人家不要RMB,害得好多次購買失敗,悲劇);這裡順便再推薦兩款編輯器,(Himi已購買正在使用中)1. ParticleDesigner(粒子特效編輯器)http://particledesigner.71squared.com/ 2.physicsEditor(物理編輯器)http://www.physicseditor.de/features/ 那麼閑話不多說了,關於推薦的編輯器大家應該很熟悉了,不熟悉的可以自定開啟串連,下面講解如何設定iphone運行程式橫豎屏問題; cocos2d引擎中預設是橫屏,在1.0.0版本中架構有所變化,所以這裡我講解的設定方法是針對cocos2d -1.0.0版本而言的; 開啟 RootViewController.m ,然後所有搜尋如下代碼:[cpp] view plaincopyUIInterfaceOrientationIsLandscape 然後看到的完整代碼如下:[cpp] view plaincopy#elif GAME_AUTOROTATION == kGameAutorotationUIViewController // // EAGLView will be rotated by the UIViewController // // Sample: Autorotate only in landscpe mode // // return YES for the supported orientations return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) ); 將最後return的修改成如下代碼即可豎屏: [cpp] view plaincopyreturn ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );