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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android 通知Notification的两种实现方法
下一篇:Cocos2D 初步了解二:图层与精灵

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月23日 05时51分56秒