cocos入门6:动作系统

1、动作系统

Cocos Creator提供的动作系统可以在一定时间内对节点完成位移,缩放,旋转等各种动作。

Cocos引擎的Action动作类并不是一个在屏幕中显示的对象,动作必须要依托于Node节点类及它的子类的实例才能发挥它的作用,Cocos中的动作不仅包括位置移动等,还包括跳跃、旋转,甚至是对象透明度的变化和颜色的渐变。这些基本动作可以构成各种复杂的动作,也可以通过sequence形成一个完整的动作序列。

1.1、基本使用API

//创建一个移动动作
let action = cc.moveTo(2, 100, 100)//2秒内移动到100,100位置
//执行动作
this.node.runAction( action)
//停止动作
this.node.stopAction( action)
//停止所有动作
this.node.stopAllActions()

1.2、动作类型

1.2.1、基础动作

基础动作就是实现各种形变,位移动画的动作,比如cc.moveTo用来移动节点到某个位置; cc.rotateBy用来旋转节点一定的角度;cc.scaleTo用来缩放节点。

基础动作中分为时间间隔动作和即时动作,前者是在一定时间间隔内完成的渐变动作,前面提到的都是时间间隔动作,它们全部继承自cc.ActionInterval。后者则是立即发生的,比如用来调用回调函数的cc.callFunc;用来隐藏节点的cc.hide,它们全部继承自cc.ActionInstant。

let moveToAc = cc.moveTo(3, 200, 200)
this.node.runAction( moveToAc)
let moveByAc = cc.moveBy(3, 100, 300)
this.node.runAction( moveByAc)

1.2.2、容器动作

容器动作以不同方式将动作组织起来

1、顺序动作:顺序动作让一系列自动做按顺序一个个执行
//按顺序执行
let seq = cc.sequence( 
	cc.moveBy( 1, 200, 0), 
	cc.moveBy( 1, 0, -200),
	cc.moveBy( 1, -200, 0),
	cc.moveBy( 1, 0, 200)
)
this.node.runAction( seq)
2、同步动作:同步动作可以同步执行一系列的自动做,字动作的执行结果会叠加起来修改节点的属性
//同步动作
let sp = cc.spawn( 
    cc.moveBy( 2, 0, 100),
    cc.scaleTo( 2, 0.8, 2.8)
)
this.node.runAction( sp)
3、重复动作:cc.repeat重复做东用来多次重复一个动作
//重复动作
let rp = cc.repeat( 
    cc.sequence( 
        cc.moveBy( 0.1, 200, 0), 
        cc.moveBy( 0.1, 0, -200),
        cc.moveBy( 0.1, -200, 0),
        cc.moveBy( 0.1, 0, 200)
    )
, 5)
this.node.runAction( rp)
4、永远重复动作:比如跑酷游戏中的背景图一直在动
//永远重复动作
let rpEver = cc.repeatForever( 
    cc.sequence( 
        cc.moveBy( 0.5, 100, 0), 
        cc.moveBy( 0.5, 0, -100),
        cc.moveBy( 0.5, -100, 0),
        cc.moveBy( 0.5, 0, 100)
    )
)
this.node.runAction( rpEver)
5、速度动作:cc.speed速度动作可以改变目标动作的执行速率,让动作更快或者更慢完成
//速度动作(下方例子速度加快了2倍)
let speedAc = cc.speed(
    cc.spawn( 
        cc.moveBy( 2, 0, 100),
        cc.scaleTo( 2, 0.8, 2.8)
    ), 2
)
this.node.runAction( speedAc)
3、

1.2.3、动作回调

//动作回调
//定义回调参数
let finished = cc.callFunc( ( target, param) => { 
    cc.log("动作回调:", param)
}, this, {p:'我是参数'})

//传入回调参数
let seq = cc.sequence( 
    cc.moveBy( 2, 200, 0),
    cc.moveBy( 2, -200, 0),
    finished
)
//执行动作
this.node.runAction( seq)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值