首次播放动画时游戏会冻结

时间:2013-11-02 17:48:38

标签: ios objective-c sprite-kit

我正在使用Sprite Kit制作游戏,当我第一次播放动画时,游戏停止几帧,这非常烦人。我该如何解决? 当我加载我的SKSpriteNode时,我加载了这样的动画纹理:

    self.frames = [[NSMutableArray alloc] init];
    SKTextureAtlas *shieldAtlas = [SKTextureAtlas atlasNamed:@"shield"];

    for (int i = 0; i < [shieldAtlas.textureNames count]; i++) {
        NSString *tempName = [NSString stringWithFormat:@"shield%.3d", i];
        SKTexture *tempTexture = [shieldAtlas textureNamed:tempName];
        if (tempTexture) {
            [self.frames addObject:tempTexture];
        }}

什么时候播放它我像往常一样行动,它在这里冻结。在第一次之后一切正常,没有任何减速。

[self.shield runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.frames timePerFrame:0.1 resize:YES restore:NO]] withKey:@"shield"];

1 个答案:

答案 0 :(得分:0)

在向阵列添加纹理后立即添加此代码块对我有帮助。我猜他们是懒惰加载的,只在访问时才加载到内存中。

[tempTexture preloadWithCompletionHandler:^{
    // duh duh
}];