Cocos2d-x3.2 Animate帧动画
来源:互联网 发布:mac 添加菜单栏图标 编辑:程序博客网 时间:2024/05/01 12:13
cocos2d-x-lua 3.3中使用plsit文件创建动画,部分代码:
--Lua 代码实现:使用plist文件来加载到animation:
isPlaying =false
--create function action
local function OnAction(menuItemSender)
if not isPlaying then
local animation = cc.Animation:create()
animation:addSpriteFrameWithFile("h1.png")
animation:addSpriteFrameWithFile("h2.png")
animation:addSpriteFrameWithFile("h3.png")
animation:addSpriteFrameWithFile("h4.png")
animation:setDelayPerUnit(0.15)
animation:setRestoreOriginalFrame(ture)
local action = cc.Animate:create(animation)
sprite:runAction(cc.RepeatForever:create(action))
isPlaying = true
c++代码3中实现方式:
//获取屏幕大小
Size visibleSize = Director::getInstance()->getVisibleSize();
//auto size = Director::getInstance()->getWinSize();
//帧动画的创建
//方式一,通过多张图片来创建
auto
sprite1 = Sprite::create(
"grossini_dance_05.png"
);
sprite1->setPosition(Vec2(visibleSize.width*0.3, visibleSize.height/2));
this
->addChild(sprite1);
//创建帧动画序列,名词形式
auto
animation = Animation::create();
for
(
int
i=5; i<11; i++)
{
char
szName[100] = {0};
sprintf
(szName,
"grossini_dance_%02d.png"
, i);
animation->addSpriteFrameWithFile(szName);
}
//设置帧动画属性
animation->setDelayPerUnit(2.0f / 6);
//每一帧停留的时间,2秒时间完成6幅图片显示,切记要写成2.0f形式!
animation->setRestoreOriginalFrame(
true
);
//播放完后回到第一帧
auto
animate = Animate::create(animation);
sprite1->runAction(RepeatForever::create(animate));
//方式二,通过一张集合的图片来创建
//创建2D纹理
auto
texture = Director::getInstance()->getTextureCache()->addImage(
"dragon_animation.png"
);
//建立图片帧
auto
frame0 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*0, 132, 132));
auto
frame1 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*0, 132, 132));
auto
frame2 = SpriteFrame::createWithTexture(texture, Rect(132*2, 132*0, 132, 132));
auto
frame3 = SpriteFrame::createWithTexture(texture, Rect(132*3, 132*0, 132, 132));
auto
frame4 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*1, 132, 132));
auto
frame5 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*1, 132, 132));
auto
sprite2 = Sprite::createWithSpriteFrame(frame0);
sprite2->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this
->addChild(sprite2);
//保存图片帧
//Vector<cocos2d::AnimationFrame *> array;
Vector<cocos2d::SpriteFrame *> array;
array.pushBack(frame0);
array.pushBack(frame1);
array.pushBack(frame2);
array.pushBack(frame3);
array.pushBack(frame4);
array.pushBack(frame5);
auto
animation2 = Animation::createWithSpriteFrames(array, 0.2f);
//此处createWithSpriteFrames()函数确实每帧间隔时间参数,需自行加上去!!!
sprite2->runAction(RepeatForever::create(Animate::create(animation2)));
//方式三,通过.plist 文件来创建
auto
cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile(
"animate.plist"
);
auto
sprite3 = Sprite::createWithSpriteFrameName(
"grossini_dance_05.png"
);
sprite3->setPosition(Vec2(visibleSize.width*0.7, visibleSize.height/2));
this
->addChild(sprite3);
Vector<cocos2d::SpriteFrame *> arr;
char
str[100] = {0};
for
(
int
i=1; i<15; i++)
{
sprintf
(str,
"grossini_dance_%02d.png"
, i);
auto
frame_2 = cache->SpriteFrameCache::getInstance()->getSpriteFrameByName(str);
//3.2版本有改变
arr.pushBack(frame_2);
}
auto
animation3 = Animation::createWithSpriteFrames(arr, 0.2f);
//此处也不要忘记加上时间间隔参数
sprite3->runAction(RepeatForever::create(Animate::create(animation3)));
return
true
;
- Cocos2d-x3.2 Animate帧动画
- Cocos2d-x3.2 Animate帧动画
- Cocos2d-x3.2 Animate帧动画
- cocos2d之Animate帧动画
- Cocos2d-x之帧动画Animate
- Cocos2d-x 之帧动画 Animate
- Cocos2d-x3.2中 简单循环动画的实现
- Cocos2d-x 动画(Animate)的制作
- cocos2d-x3.2入门
- cocos2d-x3.2 scrollView
- cocos2d-x3.4json动画删除问题
- cocos2d-x3.8骨骼动画加载
- 动画Animate
- Cocos2d-x3.2环境搭建
- Cocos2d-x3.2 LayerMultiplex使用说明
- Cocos2d-x3.2 绘制线条
- Cocos2d-x3.2 双击事件
- Cocos2d-x3.2单点触摸
- MySql查看与修改auto_increment方法
- 算法15讲——Path in Graph
- Linux网络编程之进程、线程池及实现简单线程池
- HDFS初步学习总结
- NAT技术和代理服务器
- Cocos2d-x3.2 Animate帧动画
- 安卓自定义日历选择器
- 打造高逼格个人中心动效UI
- 。
- 关于AXURE RP的使用和用途
- Sources.list配置文件
- Android7.0 popupwindow位置错误解决办法
- ThreadPoolExecutor源码解析
- angular2回调函数与数据绑定不能实时更新的问题