0

質問が明確かどうかはわかりませんが、これを見つけて、特定のスプライトが爆発するたびに呼び出されるこのrunExplosionAnimationメソッドを使用することで競合が発生するかどうか疑問に思いました。私が開発しているゲームでは、画面にこのような20のスプライトが表示される可能性があり、同じアニメーションを共有してもよいのか(animationByName:@ "anAnimation"を参照)、これによりランタイムエラーが発生する可能性があるのでしょうか。 2つのスプライトが同時に爆発している場合。

-(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];
}

}

4

1 に答える 1

1

私はまだ問題に遭遇していませんが、20未満の可能な同時ターゲットがあります。ただし、cocos2d(2.0)コードを読むと、CCAnimationオブジェクトはほとんどPOCO(プレーンなobjective-cオブジェクト:))です:どのような状態も維持していないようです。CCAnimateはそれを行います。したがって、オブジェクトはほとんど「読み取り専用」であり、キャッシュに配置された後に変更される可能性はほとんどなく、クラスのゲッターメソッドのいずれかで問題を引き起こす条件を確認できません。私はそれで安全だと感じています。使用中のスレッドモデルでは起こりそうにありません。

于 2012-12-16T17:03:26.447 に答える