我有很多想要在精灵动画中预加载和使用的图像:
我正在预加载这样的图像:
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放在我想要的数组索引处。但我不知道如何使它适应动画精灵。
答案 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。