我正在寻找与 UIImageView 中的 API 类似的事情,您可以在其中提供 5 张图像,并且在一定时间内 UIImageView 将切换这些图像。我希望在 CCSprite 中执行此操作,但我听说这样做的唯一方法是自定义节点的框架或类似的东西。
有人知道一种简单的方法来实现这样的事情,我提供 5 张图像,我希望它在 4 秒内循环播放它们吗?
谢谢!
我正在寻找与 UIImageView 中的 API 类似的事情,您可以在其中提供 5 张图像,并且在一定时间内 UIImageView 将切换这些图像。我希望在 CCSprite 中执行此操作,但我听说这样做的唯一方法是自定义节点的框架或类似的东西。
有人知道一种简单的方法来实现这样的事情,我提供 5 张图像,我希望它在 4 秒内循环播放它们吗?
谢谢!
//initialize anitmation
CCAnimation *anime= [[CCAnimation alloc] initWithName:@"anime" delay:4.0];
for(int i = 1; i <= 5; i++){
[anime addFrameWithFilename:[NSString stringWithFormat:@"frame%d.png", i]];
}
id animeAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anime]];
[self runAction:animeAction];
它需要 5 张图像并在 4.0 周期内为它们制作动画。
----- 编辑 ----- 下面是如何使用新的 Cocos2d Api 1.0.1 做到这一点:
//initialize anitmation
CCAnimation *anime= [CCAnimation animation];
anime.delay = 4.0;
for(int i = 1; i <= 5; i++){
[anime addFrameWithFilename:[NSString stringWithFormat:@"frame%d.png", i]];
}
id animeAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:anime]];
[self runAction:animeAction];
用 5 个不同的图像创建 5 个 Sprite。将它们全部放在同一位置。将 4 个精灵设置为不可见(sprite.visible = NO)。
当你想改变精灵时,你只需要将另一个精灵设置为可见,将当前可见的设置为不可见。您还可以应用 CCFadeTo 等动作来淡出一个精灵,同时淡入另一个精灵。
如果您使用淡入淡出,请确保出于性能原因仍设置可见属性。不透明度为 0 的精灵仍会被渲染,而不可见的精灵则不会。
看看CCAnimation
,CCAnimate
和CCSpriteFrame
类。
CCSpriteFrame
代表一块更大的纹理,称为精灵表。您可以将五张图像放在一张纸上。
CCAnimation
允许您从这些帧序列中创建动画并设置动画运行的速度。
并CCAnimate
允许您将该动画作为动作运行:
[node runAction:[CCAnimate actionWithAnimation:animationInstance restoreOriginal:NO]];
.
用于创建精灵表的 Zwoptex - 周围也有免费的 flash 版本