Cocos动作(1)

类图



基本动作

先拿延时动作开始:继承自 ActionInterval的动作

Sprite* sprite2 = Sprite::create("Images/blocks.png");  addChild(sprite2);

MoveBy* moveBy = MoveBy::create(3.0f, Vec2(300, 300));  moveBy->setTag(100);

sprite->runAction(moveBy);

创建精灵——》创建动作——》精灵runAction动作

MoveByMoveTo 前一个是相对坐标,即x和y分别增加300,后一个是绝对坐标,移动到300,300 。参数3.0f表示动画时长。

动作接口:

runAction是Node的属性,将动作放入了动作队列并调用这个Action的StratWithTarget。由_actionManager这个单例管理控制各种Action。Node还有StopAction系列和getActionByTag系列函数。runAction有返回值的,返回值就是运行的这个Action

注:stopAllActions只是停止了该节点的所有动作,并非所有节点动作。可以通过另一个节点停掉其他节点的Action(通过stopByTag等)

因为Action继承自Ref和Cloneable类,所有Action都有克隆功能:

MoveBy* moveBy2 =moveBy->clone();可以将一个Action克隆到另一个

 

一个动作是不能同时被2个精灵实现的,因为每个动作配套了精灵和动作的绑定关联,如果2个动作同时引用一个动作,会混乱。

Action的方法:

Action::reverse()函数可以翻转动作(反向动作):MoveBy* back =moveBy->reverse();(当给一个精灵做了很多的复杂动作时,这个做原路返回很好)

Action::startWithTarget(Node *target); target就是动作的目标精灵。

Action::step(float dt);每帧检查,并变更位置,动作的实现者但是不能被重载

Action::update(float time);每帧检查并变更位置,可以重载

 

动作实现:

通过MoveBy::update(floatt)和 MoveBy::startWithTarget(Node *target)控制实现的

 

注意:非瞬时动作是有动作表现时间的,所以如果要删除动作,一定要考虑动作是否做完。

 



### Cocos Creator 动作与动画功能概述 Cocos Creator 提供了一套完整的动作和动画解决方案,开发者可以通过内置的动作系统或者动画编辑器轻松实现各种动态效果。以下是关于 Cocos Creator 中与动作相关的功能以及其实现方法的详细介绍。 #### 1. 基础动作系统 Cocos Creator 的基础动作系统允许开发者通过脚本编程的方式创建并管理对象的动作行为。这些动作可以应用于节点的位置、旋转、缩放以及其他属性的变化。 - **常用动作类** Cocos Creator 提供了一系列预定义的动作类,例如 `cc.moveBy` 和 `cc.scaleTo` 等。这些动作可以直接作用于场景中的节点实例[^2]。 ```javascript // 创建一个移动动作,持续时间为2秒,向右移动(200, 0) let moveAction = cc.moveBy(2, cc.v2(200, 0)); // 将动作应用到当前节点 this.node.runAction(moveAction); ``` - **组合动作** 开发者还可以通过 `cc.sequence` 或 `cc.spawn` 来组合多个动作,从而实现更加复杂的行为逻辑。 ```javascript // 定义一系列连续执行的动作序列 let sequenceActions = cc.sequence( cc.fadeOut(1), // 渐隐效果,持续时间1秒 cc.moveTo(2, cc.v2(300, 300)) // 移动到指定位置,持续时间2秒 ); // 应用到节点 this.node.runAction(sequenceActions); ``` --- #### 2. 骨骼动画支持 对于更复杂的角色动画需求,Cocos Creator 支持第三方插件 Spine 和 DragonBones 实现骨骼动画效果。这种技术能够显著提升游戏画面的表现力。 - **Spine 插件集成** 使用 Spine 工具制作骨骼动画资源后,在项目中导入 `.skel` 文件即可加载对应的动画数据[^3]。 ```javascript // 加载 Spine 资源并播放特定动画 const spineAnimName = 'attack'; // 动画名称 this.spine.setAnimation(0, spineAnimName, false); // 设置循环参数为false表示只播放一次 ``` - **DragonBones 插件配置** 类似地,DragonBones 是另一种流行的骨骼动画工具,其工作流程也十分相似。只需确保正确安装插件并与场景绑定即可正常使用。 --- #### 3. 动画组件 (cc.Animation) 除了独立的动作外,Cocos Creator 还提供了专门用于处理帧动画的组件——`cc.Animation`。它适用于基于精灵图集(Sprite Sheet)的传统二维动画设计方式。 - **设置动画剪辑** 在编辑器界面完成动画片段定义之后,可通过脚本调用来控制播放状态。 ```javascript // 获取 Animation 组件引用 let animationComponent = this.getComponent(cc.Animation); // 指定要播放的动画剪辑名 animationComponent.play('run'); // 'run' 表示已命名好的动画标签 ``` - **事件监听机制** 如果希望捕捉某些关键时刻,则可注册回调函数响应相应信号。 ```javascript animationComponent.on(cc.Animation.EventType.FINISHED, () => { console.log("The current clip has finished playing."); }); ``` --- ### 总结 无论是简单平移还是高度拟真的骨骼驱动型表演,Cocos Creator 都能提供相应的技术支持手段满足不同层次的应用诉求。具体采用哪种方案取决于实际项目的美术风格和技术选型考量因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值