Cocos2Dで作成したアプリがいくつかあります。
それらのいくつかをCocos2Dの新しいリリース2.0にアップグレードしています。私が使用している方法は次のとおりです。
- 標準テンプレートから新しい空白のプロジェクトを作成します
- すべてのファイルを新しいプロジェクトに移動します
私は通常、Helloworldレイヤーを最初のレイヤーとして保持します。Cocos2Dが最初のintroLayerとしてintroLayerを作成することに気づきました。それを削除し、以前と同じようにHelloworldをロードする動作に戻しました。そうは言っても、私はいくつかのことに気づきました。
- Helloworldのinitメソッド内の動作が異なります。initメソッド内で方向が正しく報告されないことに気づきました。アプリが横向きの場合でも、常に縦向きとして報告されます。私が気付いたのは、ディレクターがまだ完全に初期化されていないようだということです。これは、監督の見解を使おうとすると確認されました。このビューは、Helloworldのinitメソッド内で使用しようとすると、常に無効になります。
これを解決するために、すべてのコードをHelloworldのonEnterメソッドに移動しました。これで、Helloworldとディレクターが完全に初期化され、すべてが機能します。
この方法は、Cocos2D 1.0から2.0にアップグレードした最初のアプリでは機能しましたが、現在Cocos2D2.0betaから2.0finalに変換しているアプリケーションに問題があります。
私が今抱えている問題は、Helloworldがタッチをトリガーしていないことです。そうです、私はこれを実行しています。
-(void) registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return YES;
}
Helloworldが2.0でタッチを検出するのを妨げているのは何ですか?Helloworldのinitメソッドを2.0ベータまたは1.0のように動作させるにはどうすればよいですか?
注:Helloworldのロード時に、ccTouchBeganとregisterWithTouchDispatcherが呼び出されることはありません。
ありがとう。