使用预加载的图像创建动画精灵

时间:2014-05-01 16:51:06

标签: objective-c cocos2d-iphone

我有很多想要在精灵动画中预加载和使用的图像:

我正在预加载这样的图像:

NSArray *imageHeroMenus = @[
                            @"hero_menu0001.png", //0
                            @"hero_menu0002.png", //0
                           ...
                            @"hero_menu0120.png", //0
                            ];

for (NSString *imageHero in imageHeroMenus)
    {


        CCTexture * tex = [CCTexture textureWithFile:imageHero];
        [loadedHeroMenu addObject:tex];


    }

如何使用此imageHeroMenus创建动画精灵?

因为当我加载一个静态精灵时,我使用这段代码:

background3 = [CCSprite spriteWithTexture:[loadedTextures objectAtIndex:0]];

将objectAtIndex放在我想要的数组索引处。但我不知道如何使它适应动画精灵。

1 个答案:

答案 0 :(得分:-1)

我了解你使用cocos2d v3.0?如果是 - 请尝试使用此处提供的解决方案: Sprite Frame Animation Cocos2d 3.0。希望它有所帮助 - 我认为使用链接中描述的SpriteFrames的方法是一个很好的方法。此外 - 以更简单的方式命名文件:

 "hero_menu1.png, hero_menu2.png,... hero_menu11.png,..." 

而不是:

"hero_menu0001.png, hero_menu0002.png,... hero_menu0011.png,..."

从那以后在代码中你可以加载一个简单的所有文件:     NSMutableArray * animFrames = [NSMutableArray array];     for(int i = 1; i< = 120; i ++)     {         CCSpriteFrame * frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@“hero_menu%d.png”,i]];         [animFrames addObject:frame];     }

并在CCAnimation中使用它们(参见上面的链接)。


如果您想使用CCTexture,可以使用

(void) addSpriteFrameWithTexture:(CCTexture*)texture rect:(CGRect)rect;

方法(参见CCAnimation.h)使用上传的纹理添加动画帧(例如在for循环中,而不是使用之前我提到的示例中解释的animationWithSpriteFrames。