cocos cc.tween call()函数不执行原因剖析

本文分析了Cocos2d-x中cc.tween的call()函数不执行的可能原因,包括回调函数未正确传入、动画未启动或被中断、时间设置错误。同时,介绍了Cocos Tween缓动的基本用法、可选属性和各种示例,如repeat、delay、parallel、then、stop、progress和回调函数的使用,帮助开发者更好地理解和应用Cocos Tween动画。
摘要由CSDN通过智能技术生成

一、cc.tween().then() 中的 call 不执行,可能的原因以下3点:

  1. 回调函数没有正确传入 then();
  2. 动画没有正确开始或者被中断了;
  3. 动画的时间设置有误,导致动画在不可见的帧上执行。

二、案例解析

let actions: any[] = []
for (let j = 1; j < this.linePos.length; j++) {
  const pos = this.linePos[j]
  const time = Math.floor((distances[j - 1] / this.speed) * 10000) / 10000
  const action = cc.moveTo(time, pos)
  actions.push(action)
  const callback = cc.callFunc(() => { this.onPlayerMoving() }, this)
  actions.push(callback)
}

let act = actions[0]
if (actions.length > 1) {
   act = cc.sequence(actions)
}  
//希望player按照act动作进行移动,移动完成后执行this.onPlayerMoved()      
cc.tween(this.player).then(act).call(() => {
            this.onPlayerMoved()
     }).start()

action会回调执行this.onPlayerMoving()函数

onPlayerMoving() {
    if (playerBox.intersects(endpointBox)) {
        if (this.endpoint.name.indexOf('_touched') == -1) {
            DataManager.instance.status = ENUM_GAME_STATUS.UNRUNING
              if (this.coinCollected > 0) {
                    this.resetDraw()
                    this.endpoint.name = 'endpoint_touched'
                    this.endpoint.removeFromParent()
                    DataManager.instance.coins += this.coinCollected
                    let level = DataManager.instance.level + 1
                    level = Math.min(level, DataManager.instance.levels)
                    DataManager.instance.level = level
                    if (level > DataManager.instance.levelMax) {
                        DataManager.instance.levelMax = level
                        //SdkManager.instance.setRank(level)
                    }
                    DataManager.instance.save()
                    //跳转界面
                    StaticInstance.gameManager.onGameOver(ENUM_GAMEUI_TYPE.WIN)
                }
                else{
                    //跳转界面
                    Sta
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值