本站文章均為 李華明Himi 原創,轉載務必在明顯處註明:
轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/iphone-cocos2d/463.html

 最近書已經進入印刷了,預訂簽名的童鞋沒想到會上三位數,非常感謝大家一如既往的支援與鼓勵;

     今天為大家介紹利用cocos2d開發中一些細節的三個問題;

     首先介紹第一點:如何開啟高清模式,大家都知道iphone4的解析度是960*640,比之前的480*320正好大了一倍,那麼如果想測試在高清模式下的遊戲效果的話,那麼首先大家肯定知道先設定iOS模擬器為iphone(Retina)模式,但是僅僅設定這裡的童鞋肯定會發現問題,因為執行後會發現控制檯列印出來的解析度仍然是480*320,這樣設定後只是讓模擬器體積放大一倍,但是解析度照舊沒變,其實這是因為cocos2d引擎的問題,你既然使用cocos2d引擎就應該知道當程式一執行後整個控制權都交給了cocos2d,那麼設定高清模式也應該從cocos2d中進行設定開啟;開啟方法很easy,

       首先開啟你的   AppDelegate.m(這裡我用的cocos2d1-1.0.0版本預設建立cocos2d專案自動生成的類);OK,然後手動搜下如下程式碼:

[director enableRetinaDisplay:YES] 

OK,搜到的程式碼完整如下;

//// 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 ,然後所有搜尋如下程式碼:

UIInterfaceOrientationIsLandscape


  然後看到的完整程式碼如下:

#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的修改成如下程式碼即可豎屏:

return ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );


           OK,此章節先介紹到這裡,