Cocos2D 初步了解三:CCAction
发布日期:2021-06-30 22:35:20
浏览次数:2
分类:技术文章
本文共 6001 字,大约阅读时间需要 20 分钟。
一、解析
1)包含4个动作 1.CCFiniteTimeAction 和时间相关的动作2.CCFlow 让图层跟随精灵移动
3.CCReapeatForever 循环 4.CCSpeed 和速度相关的动作 //————————- 2)CCFlow 让图层跟随精灵移动 3)CCFiniteTimeAction 分 a.CCInstantAction 瞬时动作 闪现 b.CCIntervalAction 延时动作 奔跑二、jumpBy , moveTo , moveBy
1) moveBy 有 reverse() 而moveTo没有 2) jumpBy height指的是跳跃时抛物线最高点离物体的距离 CCJumpBy.action(time,pos ,height, jumps);三、复杂动作
1)ccSpawn //两个动作并行运动 2) CCSequeue //两个动作串联运动 3) CCRepeatForever //无限循环运动四、代码实现
public class ActionLayer extends CCLayer { private CCSprite mManSprite; public ActionLayer() { setIsTouchEnabled(true); init(); } private void init() { createSprite("bbg_arena.jpg"); moveTo(); moveBy(); jumpBy(); scaleBy(); rotateTo(); rotateBy(); bezierBy();// 曲线 fadeIn(); ease();// 加速度 colorChange(); blink();//闪烁 multiAction();//综合动作 } private void multiAction() { CCSprite sprite = createSprite("z_1_attack_01.png"); // 设置在锚点上100处 sprite.setPosition(50, 50); sprite.setAnchorPoint(0.5f, 0.5f); CCJumpBy jump = CCJumpBy.action(2, CCNode.ccp(200, 0), 50, 1); CCRotateBy rotateBy = CCRotateBy.action(2, 360); CCSpawn ccSpawn = CCSpawn.actions(jump, rotateBy);//并行动作 // 反向 CCJumpBy reverse = jump.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(ccSpawn, reverse); // 运行动作 sprite.runAction(sequence); } private void blink() { CCBlink blink = CCBlink.action(3, 3); createSprite("msn.png").runAction(blink); } private void colorChange() { // 字体精灵 CCLabel label = CCLabel.labelWithString("颜色变化了", null, 20); label.setPosition(600, 200); label.setColor(ccc3(50, 250, 156)); this.addChild(label); // 变化后的颜色 ccColor3B c = ccc3(100, 255, 122); // 1代表时间 CCTintBy tin = CCTintBy.action(1, c); CCTintBy reverse = tin.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(tin, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(sequence); label.runAction(forever); } private void ease() { CCSprite sprite = createSprite("msn.png"); sprite.setPosition(500, 150); CCIntervalAction move = CCMoveTo.action(2, CCNode.ccp(200, 0)); CCEaseOut out = CCEaseOut.action(move, 5f); sprite.runAction(out); } private void fadeIn() { CCSprite sprite = createSprite("msn.png"); // 设置在锚点上100处 sprite.setPosition(400, 250); CCFadeIn in = CCFadeIn.action(10); // 运行动作 sprite.runAction(in); } private void bezierBy() { CCSprite sprite = createSprite("msn.png"); // 设置在锚点上100处 sprite.setPosition(200, 150); // 设置抛物线的点 CCBezierConfig c = new CCBezierConfig(); c.controlPoint_1 = ccp(0, 0); c.controlPoint_2 = ccp(100, 100); c.endPosition = ccp(200, 0); CCBezierBy rotate = CCBezierBy.action(2, c); // 反向 CCBezierBy reverse = rotate.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(rotate, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(sequence); // 运行动作 sprite.runAction(forever); } // 偷懒做法 private void rotateTo() { CCSprite sprite = createSprite("msn.png"); // 设置在锚点上100处 sprite.setPosition(300, 350); CCRotateTo rotate = CCRotateTo.action(2, 160); // 反向 // CCIntervalAction reverse = rotate.reverse(); // 连接动作 // CCSequence sequence = CCSequence.actions(rotate, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(rotate); // 运行动作 sprite.runAction(forever); } private void rotateBy() { CCSprite sprite = createSprite("msn.png"); // 设置在锚点上100处 sprite.setPosition(200, 150); CCRotateBy rotate = CCRotateBy.action(2, 360); // 反向 CCRotateBy reverse = rotate.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(rotate, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(sequence); // 运行动作 sprite.runAction(forever); } private void scaleBy() { CCSprite sprite = createSprite("heart.png"); // 设置在锚点上100处 sprite.setPosition(100, 100); // 基于锚点的缩放 CCScaleBy scale = CCScaleBy.action(2, 0.5f); // 反向 CCScaleBy reverse = scale.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(scale, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(sequence); // 运行动作 sprite.runAction(forever); } public void moveTo() { mManSprite = createSprite("z_1_attack_01.png"); CCAction move = CCMoveTo.action(2, CCNode.ccp(200, 0)); mManSprite.runAction(move); } public void jumpBy() { CCSprite sprite = createSprite("z_1_attack_01.png"); // 设置在锚点上100处 sprite.setPosition(0, 200); CCJumpBy jump = CCJumpBy.action(2, CCNode.ccp(200, 0), 50, 1); // 反向 CCJumpBy reverse = jump.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(jump, reverse); // 运行动作 sprite.runAction(sequence); } public void moveBy() { CCSprite sprite = createSprite("z_1_attack_01.png"); // 设置在锚点上100处 sprite.setPosition(0, 100); CCMoveBy move = CCMoveBy.action(2, CCNode.ccp(200, 0)); // 反向 CCMoveBy reverse = move.reverse(); // 连接动作 CCSequence sequence = CCSequence.actions(move, reverse); // 无限循环 CCRepeatForever forever = CCRepeatForever.action(sequence); // 运行动作 sprite.runAction(forever); } private CCSprite createSprite(String path) { CCSprite sprite = CCSprite.sprite(path); sprite.setAnchorPoint(0, 0); this.addChild(sprite); return sprite; }}
转载地址:https://lovoo.blog.csdn.net/article/details/51255205 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月23日 05时51分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pytorch训练cifar10数据集查看各个种类图片的准确率
2019-04-30
AGV自动导引运输车
2019-04-30
Trie树(字典树)
2019-04-30
COMP7404 Machine Learing——ROC
2019-04-30
YAPF —— Python代码格式化工具
2019-04-30
MATLAB与CUDA
2019-04-30
Linux png转jpg (convert命令)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
vscode git
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2PSK
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——DSB
2019-04-30
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
2019-04-30
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30
CodeForces - 987C Three displays (暴力/dp)
2019-04-30
牛客国庆集训派对Day4——I 连通块计数(思维)
2019-04-30
牛客国庆集训派对Day5——L 数论之神(找规律/数论)
2019-04-30