cocos2d-x (三) :场景、动作、动画特效
来源:互联网 发布:淘宝详情页素材图片 编辑:程序博客网 时间:2024/05/08 09:53
1、场景切换及效果
场景切换用replaceScene
添加切换动画
使用格式
可以上cocos2d-x的中文API 查看 http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/da/d00/group__transition.html
如右上角到左下角淡出的切换效果 TransitionFadeBL * create (
float t, Scene *scene)
t为切换效果的时间
replaceScene(Scene* scene)
所以使用格式如下
Director::getInstance()->replaceScene(TransitionFadeBL::create(1,ImnameSence::createScene()));
2、动作
所有动作都是继承自Action
动作使用如下
label->runAction(MoveTo::create(1,Point(100,100)));
让label1秒内从当前位置移动到坐标(100,100)
当前物体的所有动作都可以通过 调用runAction(Action *action )实现
反转
label->runAction(MoveBy::create(1,Point(-10,-10))->reverse());
反转仅需要调用action->reverse()便可实现
因为大部分动作都是继承自CCFiniteTimeAction
CCFiniteTimeAction 定义了Reverse 方法 可以获得一个与原动作相反的动作
重复
有限次数的重复
label->runAction(Repeat::create(RotateBy::create(1,180),3));
使用Repeat::create(Action* action,int time)便可让动作重复执行time次
无线重复RepeatForever
label->runAction(RepeatForever::create(RotateBy::create(1,180)));
混合
动作混合,即让一个物体同时执行n个动作,主要通过Spawn类实现
label->runAction(Spawn::create(MoveBy::create(1,Point(100,100)),RotateBy::create(1,360),NULL));
这行代码使label在运动到点(100,100)的过程中边旋转
Spawn* Spawn::create(FiniteTimeAction *action1, ...) 从Spawn的定义中可以看到Spawn::create是个变长函数,他可以混合无数多个动作,但是在最后一定要加上一个NULL,表示后面已经没有动作了
序列
动作序列表示指定物体按序列中的顺序,顺序执行一系列动作
如
label->runAction(Sequence::create(MoveTo::create(1,Point(100,100)),RotateBy::create(1,360),NULL));
label先移动到点(100,100),然后再点(100,100)再选择360度
Sequence::create同Spawn::create,也是个变长函数,最后要加一个NULL
侦听
动作侦听即指在动作执行完后再执行某一段代码完成指定任务
动作侦听由动作序列Sequence和CallFunc配合完成
可以看到CallFunc是继承自FiniteTimeAction的,创建的时候是传入一个回调函数
static CallFunc * create (const std::function< void()> &func)
所以使用方法如下
label->runAction(Sequence::create(
MoveTo::create(1,Point(100,100)),
RotateBy::create(1,360),
CallFunc::create([](){
MessnameBox("action complete","complete");
}),NULL));
需要注意:CallFunc需要放到倒数第二个位置,最后一个是NULL
3、动画
动画我使用了这两个文件,分别是anim.png anim.plist文件
这个两个素材是由Adobe Flash Professional CC生成的cocos-2dx动画
代码:
//动画 //创建一个缓存 auto cache = SpriteFrameCache::getInstance(); //先把图片读入内存 cache->addSpriteFramesWithFile("anim.plist"); char name[15]; memset(name,0,15); //创建动画需要读入每一帧的资源名字 Vector<SpriteFrame*> vec; for(int i=0;i<40;i++){ sprintf(name,"anim%04d",i); vec.pushBack(cache->getSpriteFrameByName(name)); } //指定动画源和每一帧时间 Animation *animation = Animation::createWithSpriteFrames(vec,0.1f); Animate *animate = Animate::create(animation); auto sprite = Sprite::create(); addChild(sprite); sprite->setPosition(200,200); sprite->runAction(RepeatForever::create(animate));
0 0
- cocos2d-x (三) :场景、动作、动画特效
- cocos2d-x动作、特效和动画(三)扭曲动作
- cocos2d-x动作、特效和动画(三)旋转和跳跃动作
- Cocos2d-x特效:场景切换效果、控件动作、逐帧动画
- cocos2d-x动作、特效和动画(一)移动动作
- cocos2d-x动作、特效和动画(二)缩放动作
- Cocos2d-X 动作特效详解
- Cocos2d-X中的动作特效
- cocos2d-x 序列帧动画与场景特效笔记
- [cocos2d-x]动作+场景切换
- cocos2d-x动作、特效和动画(四)贝赛尔曲线动作
- cocos2d-x场景切换特效
- cocos-X加载场景,以及动作特效
- cocos2d-x 动作动画方法
- cocos2d-x 动作与动画
- Cocos2d-x 3.0 动作,动画
- Cocos2d-x 3.0 动作,动画
- Cocos2d-JS 动作、特效和动画
- 玩转Protocol Buffers
- unsigned char code 是什么
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- 《unix网络编程》(9)TCP客户/服务器示例:TCP回射
- HDU2046 骨牌铺方格
- cocos2d-x (三) :场景、动作、动画特效
- android UI用ViewPager实现引导页面
- 银行家算法
- js闭包执行结束后的那些事
- onMeasure(),onLayout(),onDraw
- 普通目标文件的符号解析与重定义处理策略
- 在Azure 环境里安装 Sharepoint 2013 系统(一)创建网络、app和DB
- 关于adb连接手机offline的问题解决
- Oracle命令实践(1)