0

プレイヤーとコンピューターが順番に 10X10 グリッドで爆弾を発射する戦艦ゲームを作成しました。

iPhone用のcocos2d 2.0を使用しています。

と の 2 つのシーンがPlayerSceneありAISceneます。

Playerscene.m では、

[[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInR transitionWithDuration:1.0 scene:[AIScene sceneWithPositions:otherpos andHits:otherhits andOtherPositions: rects andOtherHits: prev]]];

プレーヤーが位置を選択した後、AIScene に進みます。

これはうまくいきます。

ただし、AIScene では、

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[CombatScene sceneWithParameters:OtherPositions andHits:OtherHits andOtherPositions: Positions andOtherHits: Hits]]];

戻ると、これは機能していません。ゲームは AIScene に残りました。

しかし、私は画面に触れることができ、ゲームは私がPlayerScene置いたばかりの爆弾で私をフラッシュし、戻ってきAISceneます.

なにが問題ですか?

最新情報: AIscene に replaceScene イベントをトリガーするボタンを追加したところ、機能しました。ただし、onEnter() メソッドの最後に追加すると機能しません。

4

2 に答える 2

1

そのコードを onEnter メソッドから取り出し、タイマーなどを作成します。たとえば、これを onEnter メソッドに入れます。

[self performSelector:@selector(replaceSceneAfterDelay:)withObject:nil afterDelay:3.0];

引き続き AIScene で、メソッドを作成します。

-(void)replaceSceneAfterDelay
{
  [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[CombatScene sceneWithParameters:OtherPositions andHits:OtherHits andOtherPositions: Positions andOtherHits: Hits]]];
}

3 秒に注意してください。は多すぎるので、自分の値を試してみてください。

以下のテキストは、本「iPhone 5 および IPad 2 の Cocos2d ゲーム開発を学ぶ」からの抜粋です。シュテフェン イッターハイムによって書かれました。リンク: http://www.amazon.com/Learn-cocos2d-Game-Development-iOS/dp/1430238135

「情景と記憶:

あるシーンを別のシーンに置き換えると、古いシーンのメモリが解放される前に、新しいシーンがメモリにロードされることに注意してください。」

于 2013-09-17T21:56:04.780 に答える