星期五, 1月 28, 2011

用NSZombieEnabled解決討人厭的EXC_BAD_ADDRESS


寫iPhone 程式,常常寫到一半

程式就死的不明不白,不清不楚

就丟個EXC_BAD_ADDRESS出來

也不交待清楚一點

真是得讓人找個老半天才知道哪裡寫錯了


爬了很久的文,終於找到了

下面這個東東,記下來以免自己忘記

也分享給吃蘋果同好~


Xcode 左側,展開 Groups & Files 內的

Executables 分類,點選 Project 名稱的項目

按右鍵選 Get Info


切換到 Arguments 的標簽頁,在底下

Variables to be set in environment 下方

有個「+」與「-」,按下「+」後

在「Name」輸入 NSZombieEnabled

Value」輸入『YES』。


以後只要有物件建立,Zombie 也會自動建立

這樣在 debug 過程,如果有錯誤訊息發生

也可以透過 Zombie 找到進一步的問題點。



星期五, 1月 21, 2011

遊戲套件 cocos2d vs corona


這兩天蠻熱門的新聞~

關於美國猶他州一位14歲少年

替iPhone設計的一套電玩

泡泡球(Bubble Ball)

既簡單又容易上癮

自去年12月29日推出以來

吸引超過200萬iPhone玩家下載

甚至打敗集合芬蘭17位專家研發

目前最熱門遊戲

憤怒的小鳥(Angry Birds)


在這個新聞背後~

也許大家都會覺得這個少年發了

焦點都關注在這少年身上

但我卻是對他用使用這個遊戲套件有興趣


其實少年寫出來的這套是Free的

所以他也沒拿到任何直接收益


但最發的應該是少年所使用的遊戲套件

前幾天也才剛試玩完另一套遊戲套件cocos2d

所以印象還非常深刻


當時我對cocos2d下的結論是

對於熟悉flash的美術工程師來玩

應該會是很得心應手的一套遊戲套件


而少年使用的是corona遊戲套件

不是喝的,是寫的

其實我不應該直接稱呼它們叫遊戲套件

應該是繪圖套件

因為它們能做的不僅僅是遊戲而已


在我還沒下手實際去玩corona之前

我覺得corona比cocos2d更有潛力


1.支援更多的繪圖技術標準

OpenGL, OpenAL, Lua


2.跨平台

除了支援iPhone, iPad等,不同的解析度

螢幕大小。更支援Android


3.號稱減少90%的開發時間


4.高效率的遊戲引擎


5.整合手機原生裝置功能

GPS, Camera, Google Map, Web Kit


不過corona跟cocos2d最大的不同

就是corona是要收費的

所以如果是要以它來開發販售的話

得再研究研究~

iphone Email & SMS Message

最近在研究iphone關於發Email跟簡訊的功能

在Email的部份,其實很快~

因為網路上有很多範例可以參考


但在簡訊的部份,可是就弄了半天

怎麼奇怪就是搞不定

關於簡訊實作在網路上的資料很很少

一般的功能都可以用模擬器來測試

Email也可以


但簡訊卻是一定得將程式執行在實機上

無法在電腦模擬

不過將程式執行在device上了

卻還是沒反應,看了log之後也覺得沒問題


最後在要放棄時~

不在意的將連接線拔掉

直接在iPhone上執行~

結果~出...來...了...


喵的咧~

原來簡訊功能一定是要從實機上執行


-(void)sendSMS {

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

picker.messageComposeDelegate = self;

picker.recipients = [NSArray arrayWithObject:@""];

picker.body = @"Hola, Bailador. Al medio !!!";

[self presentModalViewController:picker animated:YES];

[picker release];

NSLog(@"SMS fired");

}


星期二, 1月 11, 2011

introduction cocos2d how to make an animation

最近研究了一下cocos2d

在使用最新版0.99.5版上,吃盡了苦頭

一則因為這個版本跟前版語法差很多

有些method都整個改掉了

所以很多網上找的範例完全不能用

就在官網上找資料


在官網上有教學一步一步教你實作

這都還蠻好上手的

但一開始就遇到一個問題~

怎麼都只能橫向顯示

上網找了很久才找到~這是個bug


RootViewController.m文件里面,修改如下

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController

//

// EAGLView will be rotated by the UIViewController

//

// Sample: Autorotate only in landscpe mode

//

// return YES for the supported orientations

return ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );


就可以將顯示畫面扶正啦


接下來~想要做張過場動畫

結果~又卡住了!

就如前面說的,版本差異太大

一些網路教學的程式碼都不能用


最扯的是連官網上教學的sample code

都是舊的~~~

悲慘啊!


最後只好使用大絕招~

將cocos2d套件裡的程式碼

直接抓出來看,再對照官網上的api 說明

不過最好不要學我

因為api說明形同虛設

只好直接看.h 的interface宣告


我的作法是直接讀取連續的png圖檔

做成動畫播放