http://www.raywenderlich.com/zh-hans/18163/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8cocos2d%E5%88%B6%E4%BD%9C%E4%B8%80%E6%AC%BE%E7%AE%80%E5%8D%95%E7%9A%84iphone%E6%B8%B8%E6%88%8F-1
well,也許會覺得很奇怪,這個人家不是寫好了嘛,照著做一次有什麼好寫的。(更何況他還有中文頁面。)
我一開始練習的時候也是這麼想。
然後傻呼呼的去抓了最新的cocos2d的版本(v3),想說,新版是能差多少(挖鼻孔)
然後一開始.....就碰壁了,
這兩天利用零碎的時間研究了一下,靠腰,cocos2d v2->v3你也變太多了吧,這根本就是欺負人! XD
首先光是取得視窗大小的部分就不一樣,
原本
CGSize winSize = [[CCDirector sharedDirector] winSize];
在v3 裡面,已經沒看到winSize 這個屬性,所以只能改用viewSize或者viewSizeInPixels(在Mac 底下這兩個是一樣的,Definition裡面有講。)

CGSize winSize = [[CCDirector sharedDirector] viewSize];
然後會比較困擾的部份應該是原本的 action的部份
原本的寫法:
id actionMove = [ CCMoveTo actionWithDuration : actualDuration position : ccp ( - target.contentSize.width / 2 , actualY ) ] ; id actionMoveDone = [ CCCallFuncN actionWithTarget : self selector : @selector ( spriteMoveFinished : ) ] ; [ target runAction : [ CCSequence actions : actionMove, actionMoveDone, nil ] ] ; 在v3 裡面,CCMoveTo/CCCallFuncN/CCSequence已死,有事燒紙。 分別改成CCActionMoveTo/CCActionCallBlock(從程式碼也可以很明顯看得出來寫法改用^{Block}的方式取代原本的@selector,私心以為這是讓一些簡單的動作更為直觀吧?)/
CCActionSequence// Create the actions
CCActionMoveTo * actionMove = [[CCActionMoveTo alloc]initWithDuration:actualDuration position:ccp(-target.contentSize.width/2, actualY)];
CCActionCallBlock * actionCallBack = [[CCActionCallBlock alloc] initWithBlock:^{
[ self removeChild : target cleanup : YES ] ;
[_targets removeObject:target];
}];
CCActionSequence *action = [CCActionSequence actions:actionMove,actionCallBack, nil];
[target runAction:action];
然後原本touch的event的部份
也從
- ( void ) ccTouchesEnded : ( NSSet * ) touches withEvent : ( UIEvent * ) event {} 換成 -(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event{} (不過這部份我只能猜是原生的touch event就夠用了,所以就不再另外繼承這樣。)
然後播音樂的部份,
現在v3 好像也沒
#import "SimpleAudioEngine.h"
這個檔案,
查了一下發現現在是用
[[OALSimpleAudio sharedInstance] playBg:@"bgm.mp3" loop:YES]; //背景音樂
[[OALSimpleAudio sharedInstance] playEffect:@"se.mp3”]; //音效
這個來代替。
不過目前測試這個方式好像沒辦法順利播放.caf的檔案,望大德解惑。 XD
附上Github 原始碼:
https://github.com/coolthor/PracticeProject/tree/master/helloworld
現在v3 好像也沒
#import "SimpleAudioEngine.h"
這個檔案,
查了一下發現現在是用
[[OALSimpleAudio sharedInstance] playBg:@"bgm.mp3" loop:YES]; //背景音樂
[[OALSimpleAudio sharedInstance] playEffect:@"se.mp3”]; //音效
這個來代替。
不過目前測試這個方式好像沒辦法順利播放.caf的檔案,望大德解惑。 XD
附上Github 原始碼:
https://github.com/coolthor/PracticeProject/tree/master/helloworld
沒有留言 :
張貼留言