raywnderlichのサンプル プロジェクトに従って、最初の cocos2d アプリケーションに挑戦しました。
そのアプリケーションでは、移動ターゲットが以下のように追加されます
-(void)addMonster
{
__strong CCSprite * monster = [CCSprite spriteWithFile:@"monster.png"];
CGSize winSize=[CCDirector sharedDirector].winSize;
int minY=monster.contentSize.height/2;
int maxY=winSize.height-minY;
int rangY=maxY-minY;
int actualY=(arc4random()%rangY)+minY;
monster.position=ccp(winSize.width+monster.contentSize.width, actualY);
[self addChild:monster];
monster.tag=1;
int minDuration=2.0;
int maxDuration=4.0;
int actualDuration=(arc4random()%(maxDuration-minDuration))+minDuration;
CCMoveTo *actionMove=[CCMoveTo actionWithDuration:actualDuration
position:ccp(-monster.contentSize.width/2, actualY)];
CCCallBlock *actionDone=[CCCallBlock actionWithBlock:^(CCSprite *node){
[node removeFromParentAndCleanup:YES];// crashed at this point
[_monsters removeObject:node];
}];
[monster runAction:[CCSequence actions:actionMove,actionDone,nil]];
[_monsters addObject:monster];
}
そして、以下のように CCLayerColor サブクラス(シーン)の -init メソッドから上記のメソッドをスケジュールします
-(id)init
{
// player adding code
[self schedule:@selector(gameLogic) interval:1.0];
}
-(void)gameLogic
{
[self addMonster];
}
つまり、iPad 画面の左端から右端に移動する
私の問題は、ノード オブジェクトへのアクセス中に CCCallBlock でアプリケーションがクラッシュすることです。
ソースをダウンロードする代わりに、開始点から手順を複製することを計画しましたが、まだリリースされた場所を見つけることができません。仲間を助けて
更新:- クラッシュ時のスクリーンショットを投稿しました