【问题标题】:Cocos2d: are there any possible run time errors if two sprites run the same CCAnimation from CCAnimationCache at the same time?Cocos2d:如果两个精灵同时从 CCAnimationCache 运行相同的 CCAnimation,是否有任何可能的运行时错误?
【发布时间】:2012-12-16 14:41:25
【问题描述】:

不确定问题是否明确,但我发现了这一点,并想知道在每次特定精灵必须爆炸时调用此 runExplosionAnimation 方法是否会有任何冲突。在我正在开发的游戏中,屏幕上可能有 20 个这样的精灵,我想知道让它们共享相同的动画是否可以(参见 animationByName:@"anAnimation")或如果两个精灵同时爆炸,这可能会导致一些运行时错误。

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

}

【问题讨论】:

    标签: ios caching animation cocos2d-iphone


    【解决方案1】:

    我还没有遇到问题,但可能同时存在的目标少于 20 个。然而,阅读 cocos2d (2.0) 代码,CCAnimation 对象几乎是一个 POCO(普通的objective-c 对象:)):它似乎不保持任何状态。 CCAnimate 就是这样做的。所以这些对象几乎是“只读的”,在放入缓存后不太可能改变,而且我看不到会导致类的任何 getter 方法出现问题的情况。我对此感到安全,使用中的线程模型极不可能发生。

    【讨论】:

    • 一个非常明确的答案。在我对 Cocos2d 框架的理解仍然很差的过程中,这绝对是一个进步。我现在很想了解更多关于正在使用的线程模型:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    相关资源
    最近更新 更多