Cocos2d3.0学习笔记-Action复杂动作
来源:互联网 发布:字体识别软件app 编辑:程序博客网 时间:2024/06/05 06:52
今天我们来学习一下,较为复杂的动作。
内容主要有
- 贝塞尔曲线运动
- 重复动作
- 组合动作
贝塞尔曲线运动 - BezierTo BezierBy
不了解贝塞尔曲线的,可以百度一下相关知识,这里只做实现就不解释了。
一共有两种,BezierTo和 BezierBy
- BezierTo 是向目标位置进行移动,与精灵当前位置无关
- BezierBy 是在当前精灵的位置基准下进行移动的
BezierTo实现
//---------------------------BezierTo 贝塞尔曲线运动------------------------------------- //获得屏幕尺寸 Size visiableSize = Director::getInstance()->getVisibleSize(); //添加一个精灵,这里测试时,可以尝试改变panda_spr1的 y值,就可以发现BezierTo的特性了 Sprite* panda_spr1 = Sprite::create("panda2.png"); panda_spr1->setPosition(ccp(0, 400)); this->addChild(panda_spr1); //创建贝塞尔曲线的配置 ccBezierConfig bezier; bezier.controlPoint_1 = Point(100, 0); //波谷偏向值 bezier.controlPoint_2 = Point(200, 250); //波峰偏向值 bezier.endPosition = Point(300, 0); //动作终点 //创建 BezierTo 动作对象, BezierTo 是向目标位置进行移动,与精灵当前位置无关 BezierTo* bezierToAct = BezierTo::create(4.0f, bezier); //执行动作 panda_spr1->runAction(bezierToAct);
BezierBy 实现
//---------------------------BezierBy 贝塞尔曲线运动------------------------------------- //获得屏幕尺寸 Size visiableSize = Director::getInstance()->getVisibleSize(); //添加一个精灵 Sprite* panda_spr1 = Sprite::create("panda2.png"); panda_spr1->setPosition(ccp(50, 180)); this->addChild(panda_spr1); //创建贝塞尔曲线的配置 ccBezierConfig bezier; bezier.controlPoint_1 = Point(100, 0); //波谷偏向值 bezier.controlPoint_2 = Point(200, 250); //波峰偏向值 bezier.endPosition = Point(300, 0); //动作终点 //创建 BezierBy 动作对象,BezierBy 是在当前精灵的位置基准下进行移动的 BezierBy* bezierByAct = BezierBy::create(4.0f, bezier); //执行动作 panda_spr1->runAction(bezierByAct);
重复运动-RepeatForever
先实现一个弹跳 jumpBy 效果,跳两秒,向上1/3width向右1/3height,跳跃高度200,一共跳两次
//获取屏幕大小 Size visiableSize = Director::getInstance()->getVisibleSize(); //新建一个精灵 Sprite* panda_spr = Sprite::create("panda2.png"); panda_spr->setPosition(ccp(0, 0)); this->addChild(panda_spr); //创建一个 弹跳 对象,参数分别是,跳两秒,向上1/3width向右1/3height,跳跃高度200,一共跳两次 JumpBy* jpByAct = JumpBy::create(2.0f, ccp(visiableSize.width / 3, visiableSize.height / 3), 200, 2); //runAction 启动动作 panda_spr->runAction(jpByAct);
我们让他重复执行跳跃操作,只需要一句话
-RepeatForever* repForAct = RepeatForever::create(jpByAct);
然后将启动动作,改成重复动作repForAct,他就一直做动作,不停喽。
//获取屏幕大小 Size visiableSize = Director::getInstance()->getVisibleSize(); //新建一个精灵 Sprite* panda_spr = Sprite::create("panda2.png"); panda_spr->setPosition(ccp(0, 0)); this->addChild(panda_spr); //创建一个 弹跳 对象,参数分别是,跳两秒,向上1/3width向右1/3height,跳跃高度200,一共跳两次 JumpBy* jpByAct = JumpBy::create(2.0f, ccp(visiableSize.width / 3, visiableSize.height / 3), 200, 2); RepeatForever* repForAct = RepeatForever::create(jpByAct); //runAction 启动动作 panda_spr->runAction(repForAct);
组合动作-Sequence 和 Spawn
- Sequence 就是所有 动作 按顺序 一个一个 做
- Spawn 就是所有 动作 一起 做
- 最终动作结束点,两者是一样的,只是过程不一样。可以自己试一下,体验一下,还是很好玩的。
//获取屏幕大小 Size visiableSize = Director::getInstance()->getVisibleSize(); //新建一个精灵 Sprite* panda_spr = Sprite::create("panda2.png"); panda_spr->setPosition(ccp(0, 0)); this->addChild(panda_spr); //创建一个 弹跳 对象,参数分别是,跳两秒,向上1/3width向右1/3height,跳跃高度200,一共跳两次 JumpBy* jpByAct = JumpBy::create(2.0f, ccp(visiableSize.width / 3, visiableSize.height / 3), 200, 2); //创建一个 移动 对象 MoveBy* moveByAct = MoveBy::create(4.0f, ccp(visiableSize.width / 3, visiableSize.height / 3)); //创建一个 旋转 对象,转转转,哈哈 RotateBy* rotaByAct = RotateBy::create(6.0f, 3600, 3600); //------------------------Spawn所有动作一起运动---------------------------- Action* action = Spawn::create(jpByAct, moveByAct, rotaByAct, NULL); //------------------------Sequence所有动作按顺序运动---------------------------- //Action* action = Sequence::create(jpByAct, moveByAct, rotaByAct, NULL); //runAction 启动动作 panda_spr->runAction(action);
成功了没,是不是很好玩?嘿嘿。这种组合动作明显有趣多了。
1 0
- Cocos2d3.0学习笔记-Action复杂动作
- Cocos2d3.0RC2 Label 学习笔记一
- cocos2d学习笔记2--动作action
- cocos2d-x学习笔记(四)动作(Action)
- Cocos2D3.x学习笔记之ActionManagerTest
- cocos2dX Action 稍微复杂些的动作
- 【Cocos2d-html5游戏引擎学习笔记(9)】Action系统动作
- Cocos2d-x学习笔记(15)(Action动作)
- Cocos2d3.0之 action的用法从一个故事说起
- [ Libgdx 学习笔记 ] - Action 动作类与 Actions(管理类,动作池) [待更新]
- [ Libgdx 学习笔记 ] - Action 动作类与 Actions(管理类,动作池)
- Cocos3.0学习笔记-Acition-基本动作
- 【Cocos2d-x Lua笔记七】Action动作
- cocos2d-x 3.1.1 学习笔记[3]Action 动作
- cocos2d3.0 Scale9Sprite
- Cocos2d3.0 CheckBox
- cocos2d3.0 Scale9Sprite
- Cocos2d3.0 CheckBox
- Xcode插件
- 【Android】屏幕像素、密度工具类
- 杭电5311-Hidden String(暴力列举)
- 解决tomcat的startup.bat开启闪退问题
- oracle 触发器临时数据
- Cocos2d3.0学习笔记-Action复杂动作
- 分享一个Openstack的社区消息获取工具
- LeetCode 231判断2的幂
- 题解: Codeforces 598A Tricky Sum (水)
- 读书笔记--Activity的生命周期、加载模式,以及Fragment
- GraphLab 资源
- 【C#学习】——方法(函数)
- 计算机技术领域当前的主流技术及其社会需求调查报告
- 对kalman滤波的理解