2012-12-16 2 views
0

질문이 명확한 지 확실하지 않지만이 내용을 발견하여 특정 스프라이트가 폭발 할 때마다 호출되는 runExplosionAnimation 메서드를 사용하는 데 충돌이 있는지 궁금합니다. 내가 개발하고있는 게임에서 화면에 이와 같은 20 개의 스프라이트가있을 수 있으며 같은 애니메이션 (animationByName : @ "anAnimation" 참조)을 공유하도록 설정했는지 궁금합니다. 두 개의 스프라이트가 동시에 폭발하는 경우 런타임 오류가 발생합니다.Cocos2d : 두 스프라이트가 동시에 CCAnimationCache에서 같은 CCAnimation을 실행하면 런타임 오류가 발생할 수 있습니까?

-(void) runExplosionAnimation 
{ 
[self stopAllActions]; 

CCAnimation* anim = [[CCAnimationCache sharedAnimationCache] animationByName:@"anAnimation"]; 
if(anim!=nil){ 
    [self runAction:[CCSequence actions: [CCAnimate actionWithDuration:0.4f animation:anim restoreOriginalFrame:false], [CCHide action], nil]]; 
} 
else{ 
    [self loadSharedAnimationIfNeeded]; 
} 

} I,하지만 미만 20 개 가능한 동시 목표로 아직 문제가 발생하지 않은

답변

1

. 그러나 cocos2d (2.0) 코드를 읽으면 CCAnimation 객체는 거의 POCO (일반 objective-c 객체 :)입니다. 어떤 종류의 상태도 유지하지 못하는 것 같습니다. CCAnimate가 그렇게합니다. 따라서 객체는 거의 '읽기 전용'이며 캐시에 배치 된 후에는 변경 될 가능성이 거의 없으며 클래스의 getter 메소드에 문제가 발생할 수있는 조건을 볼 수 없습니다. 사용하는 스레딩 모델로 인해 발생할 가능성은 거의 없으며 안전하다고 느낍니다.

+0

매우 명확한 대답입니다. Cocos2d 프레임 워크에 대한 나의 열등한 이해를 한 발 앞서 내딛었습니다. 이제는 쓰레딩 모델에 대해 더 많이 이해하고 싶습니다 :). – mm24

관련 문제