현재 CCSprite를 장면 (움직이는 고스트)에 추가하고 이동하도록하는 작업을하고 있습니다. 임의로 생성 된 지점에서 다른 임의로 생성 된 지점으로 이동하고, 페이드 아웃 한 다음 장면에서 제거 할 수 있습니다. 플레이어가 유령을 두드리면 점수에 1이 추가됩니다.CCSprite가 있는지 확인하고, CCScene에서 추가 및 제거하고 조건이 충족 될 때까지 반복합니다.
모든 것이 아름답게 작동하지만 조건이 충족 될 때까지 (특히 점수가 50에 도달 할 때까지)이 작업을 반복해야합니다. 나는 이것을 할 수있는 최선의 방법을 알 수 없다. 루프를 실행할 때마다 무한 반복되고 게임이 중단됩니다.
이러한 루프를 수행하는 가장 좋은 방법은 무엇입니까? 스프라이트에 대한 배열 생성에 대한 언급을 들었지만 한 번에 장면의 유령 반복이 하나만있을 것입니다. 이것을 달성하는 다른 방법이 있습니까?
이상적으로, 내가 무엇을 달성하고자하는 것은 : 들어
-(void) ghostSpawner {
CGPoint endPoint = [self randomPointGenerator];
[self birthGhost];
CCSprite * Ghost = (CCSprite *) [self getChildByTag:2];
//...then fade him in
CCFiniteTimeAction *ghostBegin = [CCSequence actions:[CCDelayTime actionWithDuration:1],[CCTintTo actionWithDuration:0 red:0 green:0 blue:0],[CCTintTo actionWithDuration:.5 red:255 green:255 blue:255], nil];
//...move him over a given amount of time, then fade him out and DIE
CCFiniteTimeAction *ghostEnd = [CCSequence actions:[CCMoveTo actionWithDuration:2 position:endPoint],[CCTintTo actionWithDuration:1 red:0 green:0 blue:0],[CCCallFunc actionWithTarget:self selector:@selector(killGhost)], nil] ;
[Ghost runAction:[CCRepeatForever actionWithAction:[CCSequence actions:ghostBegin,ghostEnd, nil]]];
}
: 작업을 실행 그들이 끝날 때까지 기다린 다음 점수가 여기에 50
때까지 다시 실행 내 코드입니다 스프라이트 생성 :
-(void) birthGhost {
CGPoint spawnPoint = [self randomPointGenerator];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"ghostidle.plist"];
CCSprite * Ghost = [CCSprite spriteWithSpriteFrameName:@"Ghost0001.png"];
[Ghost setColor:ccc3(0,0,0)];
Ghost.anchorPoint = ccp(.5, .5);
Ghost.position = spawnPoint;
Ghost.anchorPoint = ccp(0.5f,0.5f);
Ghost.scale = .4;
Ghost.tag = 2;
[Ghost runAction:ghostIdleAnimation()];
[self addChild:Ghost z:0];
}
을 'ghostSpawner'기능은 현장에 내 '초기화하기'에서라고
[self ghostSpawner];
이 정도면 충분합니다. 이것이 내 첫 번째 진짜 아이폰 프로젝트 중 하나이기 때문에 어떤 의견이라도 굉장 할 것입니다. 미리 감사드립니다!
Yup! 이것은 완벽했습니다. while이나 for 루프에 대한 전통적인 do를 만드는 대신, 이것이 내가 생각할 필요가있는 방법이다. 그 중 하나가 만족해야 할 조건을 충족시킬 때까지 앞뒤로 튀어 오르는 함수 호출 루프를 작성해야했습니다. 귀하의 의견을 보내 주셔서 감사합니다. – GreenWire