cocos2dx基础篇(24)——基本动画CCAnimation/CCAnimate
发布时间:2020-12-14 20:46:04 所属栏目:百科 来源:网络整理
导读:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处、作者信息和本声明。否则将追究法律责任。 http://www.jb51.cc/article/p-mukkzrog-wx.html 【唠叨】 基本动画制作需要用到 CCAnimation 类,用于存储动画相关的信息。以及由CCActionInterva
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处、作者信息和本声明。否则将追究法律责任。
http://www.52php.cn/article/p-mukkzrog-wx.html
|
//创建动画帧CCAnimationFrame数组
//创建数组
;
//从精灵帧缓冲池中获取一个精灵帧
CCAnimationFrame*animationFrame=
CCAnimationFrame();
//创建动画帧
animationFrame->setSpriteFrame(frame);
//设置精灵帧
animationFrame->setDelayUnits(i);
//设置到下一动画帧的间隔帧数
array->addObject(animationFrame);
//将动画帧添加到数组
1.3、CCSpriteFrameCache精灵帧缓冲
|
//将Animation/grossini.plist加入到精灵帧缓冲池中
//也就是将动画需要用到的批图片加到缓冲池中
//用于创建精灵帧
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(
"Animation/grossini.plist"
);
1.4、CCAnimationCache动画缓冲
|
//动画命名为Explosion,加入到动画缓冲中
CCAnimation*animation=CCAnimation::createWithSpriteFrames(arr,0.04);
CCAnimationCache::sharedAnimationCache()->addAnimation(animation,
"Explosion"
);
//直接从缓冲池中取出Explosion动画
CCAnimation*animation=CCAnimationCache::sharedAnimationCache()->animationByName(
);
2、CCAnimation
|
//
/**
* 总共有三种创建方法:
* (1)创建空动画
* (2)使用精灵帧数组创建
* (3)使用动画帧数组创建
* 注意第二个方法是createWithSpriteFrames,而不是create。
*/
//创建一个空动画
CCAnimation::create();
//使用CCSpriteFrame精灵帧数组,单位帧间隔delay秒
//实际上在内部创建了动画帧CCAnimationFrame,且间隔帧数为:1
CCAnimation::createWithSpriteFrames(CCArray*arrayOfSpriteFrameNames,
float
delay=0.0f);
//使用CCAnimationFrame动画帧数组,单位帧间隔delayPerUnit秒,重复次数loops
//其中loops:0为执行动画;1为执行一次,……,-1为无限循环
static
CCAnimation*create(CCArray*arrayOfAnimationFrameNames,monospace!important; font-size:1em!important; min-height:inherit!important; background:none!important">delayPerUnit,unsigned
int
loops=1);
2.2、添加动画帧函数
|
* 总共有三种添加动画帧的方法:
* (1)使用CCSpriteFrame
* (2)使用图片资源(jpg,png等)
* (3)使用纹理图片CCTexture2D
* (4)直接设置动画帧数组setFrames
//使用精灵帧来添加一个动画帧,间隔帧数:1
void
addSpriteFrame(CCSpriteFrame*pFrame);
//使用图片资源(jpg,png等)来添加一个动画帧,间隔帧数:1
addSpriteFrameWithFileName(
const
*pszFileName);
//从图片纹理中截取CCRect部分区域的图片,间隔帧数:1
addSpriteFrameWithTexture(CCTexture2D*pobTexture,
const
CCRect&rect);
//直接设置动画帧CCAnimationFrames数组
setFrames(CCArray*pAnimationFrames);
CCArray*getFrames();
2.3、属性设置 |
* 单位帧间隔、间隔帧数、动画总时间
* setDelayPerUnit,getTotalDelayUnits,getDuration
*/
//设置单位帧间隔delayPerUnit秒
setDelayPerUnit(
);
getDelayPerUnit();
//间隔帧数的总和totalDelayUnits
//即:每个精灵帧到下一精灵帧的间隔帧数之和
getTotalDelayUnits();
//动画总时间:delayPerUnit*totalDelayUnits
getDuration();
/**
* 其他属性设置
* setFrames,setRestoreOriginalFrame,setLoops
*/
//设置动画帧CCAnimationFrames数组
setFrames(CCArray*pAnimationFrames);
CCArray*getFrames();
//当动画结束时,是否还原为第一帧
setRestoreOriginalFrame(
bool
);
getRestoreOriginalFrame();
//动画执行次数
//0表示不执行动画,1表示执行1次,……,-1表示无限循环
setLoops(unsigned
);
unsigned
getLoops();
3、CCAnimate
|
//使用CCAnimation创建CCAnimate
CCAnimate*animate=CCAnimate::create(animation);
sprite->runAction(animate);
//运行动画动作
【代码实战】
|
//创建精灵sprite
CCSprite*sprite=CCSprite::create(
"Animation/dance_00.png"
);
sprite->setPosition(mysize/2);
this
->addChild(sprite);
//创建CCAnimation
CCAnimation*animation=CCAnimation::create();
//直接添加图片资源
for
(
i=1;i<=14;i++){
str[50];
sprintf
(str,monospace!important; font-size:1em!important; min-height:inherit!important; color:blue!important; background:none!important">"Animation/dance_%02d.png"
,i);
animation->addSpriteFrameWithFileName(str);
//添加动画帧
}
//设置属性
animation->setRestoreOriginalFrame(
true
);
//还原第一帧
animation->setDelayPerUnit(2.0/14.0);
//单位帧间隔
animation->setLoops(-1);
//-1无限循环
//创建CCAnimate
CCAnimate*animate=CCAnimate::create(animation);
//执行动画动作
sprite->runAction(animate);
3、使用精灵帧 |
//将plist批处理的多张图片,添加到精灵帧缓冲池中
);
//创建精灵帧CCSpriteFrame数组
CCArray();
i=1;i<=14;i++){
str[50];
"grossini_dance_%02d.png"
array->addObject(frame);
}
//使用精灵帧数组创建,单位帧间隔为2.0/14.0秒
CCAnimation*animation=CCAnimation::createWithSpriteFrames(array,2.0/14.0);
//属性设置
//还原第一帧
//无线循环
//创建CCAnimate
CCAnimate*animate=CCAnimate::create(animation);
//执行动画动作
sprite->runAction(animate);
4、使用动画帧 |
//将plist批处理的多张图片,添加到精灵帧缓冲
//创建动画帧CCAnimationFrame数组
CCAnimationFrame();
//设置精灵帧
//设置间隔帧数
array->addObject(animationFrame);
}
//使用动画帧数组创建,单位帧间隔0.2秒
CCAnimation*animation=CCAnimation::create(array,0.2f);
);
animation->setLoops(-1);
//创建CCAnimate
CCAnimate*animate=CCAnimate::create(animation);
//执行动画动作
sprite->runAction(animate);
5、运行结果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 2013.6.7 配置文件注册,签名,Manifest.xml
- Cocos2d-x3.2总结(五)Eclipse下生成Android APK
- ruby-on-rails – 测试Rspec时的FactoryGirl和belongs_to协
- xcode – 错误ITMS-90542:“CFBundleSupportedPlatforms值
- oracle 执行包含update语句的存储过程并获取结果记录
- 15条SQLite3数据库常用语句
- 多个表连接与聚合(mssql / sql server)
- 正则表达式 常用
- ruby-on-rails – 通过Ruby on Rails验证方法验证年份的最佳
- objective-c – 无法将Obj-C子项目添加到Xcode Obj-C项目中