2013年1月30日水曜日

【cocos2d】CCSchedulerクラスのschedulerメソッド、CCTouchDispatcherクラスのsharedDispatcherメソッドの仕様変更について

CCSchedulerクラスのschedulerメソッド、CCTouchDispatcherクラスのsharedDispatcherメソッドがcocos2d 2.0からは仕様が変わっていたのでその対処方法をメモ。

以下のページにその詳細が記載されていました。

cocos2d v2.0 migration guide - cocos2d for iPhone

記事の内容をそのまま抜粋します。
// v1.0
+ (CCTouchDispatcher*) sharedDispatcher; // CCTouchDispatcher class method
+ (CCScheduler*) sharedScheduler;        // CCScheduler class method
+ (CCActionManager *) sharedManager;     // CCActionManager class method
 
// v2.0
@property (nonatomic,readwrite,retain) CCScheduler *scheduler;   // CCDirector property
@property (nonatomic,readwrite,retain) CCActionManager *actionManager;  // CCDirector property
@property (nonatomic,readwrite,retain) CCTouchDispatcher * touchDispatcher; // CCDirector property (iOS)
@property (nonatomic, readwrite, retain) CCEventDispatcher* eventDispatcher; // CCDirector property (Mac)

公式ページの説明を見る限りでは、プロパティとして扱いが変わったようですね。

それに従って

cocos2dで作るiPhone&iPadゲームプログラミング(初版 p.128)に載っているソースコードを書き換えてみます。

CCSchedulerクラス schedulerメソッド

//変更前
[[CCScheduler scheduler] scheduleUpdateForTarget:self priority:0 paused:NO];
//変更後
[[[CCDirector sharedDirector] scheduler]scheduleUpdateForTarget:self priority:0 paused:NO];

CCTouchDispatcherクラス sharedDispatcherメソッド

//変更前
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
//変更後
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

こんな感じです。

参考記事

cocos2d v2.0 migration guide - cocos2d for iPhone
Deprecated APIs - cocos2d for iPhone Forum

0 件のコメント:

コメントを投稿