当前位置: 首页 > news >正文

cocos2d-lua:动作Actions的使用

目录

常用动作

移动MoveTo、MoveBy

缩放ScaleTo、ScaleBy

旋转RotateTo、RotateBy

淡入淡出FadeIn、FadeOut

延时DelayTime

回调CallFunc

重复动作

缓冲动作

序列动作

顺序动作Sequence

同时动作Spawn

动作的克隆

动作的倒转

动作的执行

动作的停止


常用动作

移动MoveTo、MoveBy

MoveTo:
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))  -- 参数1:动作持续的时间(float)  参数2:终点位置

MoveBy:
local moveAction = cc.MoveBy:create(1, cc.p(100, 100))  -- 参数1:动作持续的时间  参数2:以节点当前位置为(0, 0)进行移动的终点位置

ps:To和By的区别

To:动作开始的状态(位置、大小、角度等属性)为节点的初始状态(节点最初的状态)

By:动作开始的状态为节点的当前状态(可能已经进行过移动、缩放、旋转等操作)

缩放ScaleTo、ScaleBy

ScaleTo:
local scaleAction1 = cc.ScaleTo:create(1, 2)  -- 参数1:动作持续的时间 参数2:缩放的比例(x、y同比缩放)
or
local scaleAction2 = cc.ScaleTo:create(1, 2, 2.5)  -- 参数1:动作持续的时间  参数2:x缩放的比例  参数3:y缩放的比例

ScaleBy:
local scaleAction1 = cc.ScaleBy:create(1, 2)
or
local scaleAction2 = cc.ScaleBy:create(1, 2, 2.5)

旋转RotateTo、RotateBy

RotateTo:
local rotateAction = cc.RotateTo:create(1, 90)  -- 参数1:动作持续的时间  参数2:旋转的角度(以z为轴)

RotateBy:
local rotateAction = cc.RotateBy:create(1, 90)

淡入淡出FadeIn、FadeOut

FadeIn:
local fadeInAction = cc.FadeIn:create(2)  -- 参数:动作持续的时间

FadeOut:
local fadeOutAction = cc.FadeOut:create(2)

ps:设置透明度setOpacity(0),值为0-255!

local blinkAction = cc.Blink:create(1, 5)  -- 参数1:动作持续的时间  参数2:闪烁的次数

延时DelayTime

local delayTimeAction = cc.DelayTime:create(0.5)  -- 参数:动作持续的时间

回调CallFunc

local callFuncAction = cc.CallFunc:create(function()
    -- TODO
end)  -- 参数:回调函数

重复动作

Repeat:有限次数的重复某个动作
local blinkAction = cc.Blink:create(1, 2)  -- 1s2闪
local repeatAction = cc.Repeat:create(blinkAction, 5)  -- 参数1:有限时间动作  参数2:重复的次数(int)

RepeatForever:无限次数重复某个动作
local blinkAction = cc.Blink:create(1, 1)
local repeatForeverAction = cc.RepeatForever:create(blinkAction)  -- 参数:延时动作

缓冲动作

EaseIn:加速
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeInAction = cc.EaseIn:create(moveAction, 5)  -- 参数1:延时动作  参数2:缓冲系数

EaseOut:减速
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeOutAction = cc.EaseOut:create(moveAction, 5)

EaseBackInOut:回震缓冲
local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local easeBackInOutAction = cc.EaseBackInOut:create(moveAction)  -- 参数:延时动作

ps:缓冲动作的种类很多,具体效果可以查看动作类之缓冲动作和组合动作的使用!

序列动作

顺序动作Sequence

一个Sequence可以包含任何数量的动作对象,回调方法和其它序列,顺序执行!

local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local delayTimeAction = cc.DelayTime:create(0.5)
local scaleAction = cc.ScaleTo:create(1, 2)
local callFuncAction = cc.CallFunc:create(function()
    print("Over")
end)
local sequenceAction = cc.Sequence:create(moveAction, delayAction, scaleAction, callFuncAction)

同时动作Spawn

Spawn对象可以添加任意数量的动作和其它Spawn对象,同时执行所有的动作!

local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local scaleAction = cc.ScaleTo:create(1, 2)
local rotateAction = cc.RotateTo:create(2, 90)  -- 放入Spawn中的动作持续的时间可以不一致
local spawnAction = cc.Spawn:create(moveAction, scaleAction, rotateAction)

动作的克隆

克隆(Clone)的功能和字面含义一样,如果你对一个Action对象使用了clone()方法,你就获得了这个Action对象的拷贝。

为什么要使用clone()方法? 因为当Action对象运行时会产生一个内部状态,记录着节点属性的改变。当你想将一个创建的动作,重复使用到不同的节点对象时,如果不用clone()方法,就无法确定这个动作的属性到底是怎样的(因为被使用过,产生了内部状态),这会造成难以预料的结果。

local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
local moveAction_clone = moveAction:clone()

动作的倒转

倒转(Reverse)的功能也和字面意思一样,调用reverse()可以让一系列动作按相反的方向执行。reverse()不是只能简单的让一个Action对象反向执行,还能让Sequence和Spawn倒转。

local moveAction = cc.MoveBy:create(1, cc.p(100, 100))
node:runAction(moveAction:reverse())

动作的执行

runAction():执行一个动作或动作序列

local moveAction = cc.MoveTo:create(1, cc.p(100, 100))
node:runAction(moveAction)

动作的停止

stopAllActions():停止目标节点的所有动作

node:stopAllActions()

stopActionByTag():停止目标节点的指定动作

local moveAction = cc.MoveBy:create(10, cc.p(100, 100))
moveAction:setTag(1)
local scaleAction = cc.ScaleTo:create(10, 2)
scaleAction:setTag(2)
local delayTimeAction = cc.DelayTime:create(5)
local callFuncAction = cc.CallFunc:create(function()
    node:stopActionByTag(1)
end)
local sequenceAction = cc.Sequence:create(delayTimeAction, callFuncAction)
node:runAction(moveAction)
node:runAction(scaleAction)
node:runAction(sequenceAction)

ps:关于动作官网最新的文档和API!

 

相关文章:

  • Lua实战之判断连续
  • Lua实战之统计字符串中任意字符出现的次数
  • 用OE收GMAIL信
  • cocos2d-lua:进度条ProgressTimer的使用
  • 用HFNetChk下载更新补丁
  • cocos2d-lua:Label的使用
  • win打开自带的画图工具
  • HR经理必备之IT术语
  • cocos2d-lua:XMLHttpRequest的使用
  • [啃书]身体使用手册 --《You:The owner's manual》
  • bat 概述
  • 圣诞节送给访问我BLOG的人
  • Lua实战之洗牌算法
  • Lua中loadstring的使用
  • 玩转“网上邻居”之浏览服务原理(一)
  • @jsonView过滤属性
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CSS 提示工具(Tooltip)
  • css选择器
  • echarts花样作死的坑
  • javascript 哈希表
  • MYSQL 的 IF 函数
  • Python socket服务器端、客户端传送信息
  • python学习笔记-类对象的信息
  • Rancher如何对接Ceph-RBD块存储
  • Redis中的lru算法实现
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • underscore源码剖析之整体架构
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 代理模式
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 技术:超级实用的电脑小技巧
  • 简析gRPC client 连接管理
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 你真的知道 == 和 equals 的区别吗?
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #14vue3生成表单并跳转到外部地址的方式
  • #预处理和函数的对比以及条件编译
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (function(){})()的分步解析
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (初研) Sentence-embedding fine-tune notebook
  • (二)pulsar安装在独立的docker中,python测试
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (离散数学)逻辑连接词
  • (七)理解angular中的module和injector,即依赖注入
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (译)计算距离、方位和更多经纬度之间的点
  • (原)本想说脏话,奈何已放下