zoukankan      html  css  js  c++  java
  • cocos2dx-lua 延迟调用函数和定时器

    下面是cocos官方的方法。

    function performWithDelay(node, callback, delay)
        local delay = cc.DelayTime:create(delay)
        local sequence = cc.Sequence:create(delay, cc.CallFunc:create(callback))
        node:runAction(sequence)
        return sequence
    end

    使用示例:

    performWithDelay(node,function()  
            print("Hello")  
    end,time)  

    以下引用自:http://blog.csdn.net/hzl877243276/article/details/38468541

    在 引擎根目录/cocos/scripting/lua-bindings/script 的extern.lua文件中定义了 schedule 和 performWithDelay 两个函数:
     
    function schedule(node, callback, delay)
        local delay = cc.DelayTime:create(delay)
        local sequence = cc.Sequence:create(delay, cc.CallFunc:create(callback))
        local action = cc.RepeatForever:create(sequence)
        node:runAction(action)
        return action
    end
     
    function performWithDelay(node, callback, delay)
        local delay = cc.DelayTime:create(delay)
        local sequence = cc.Sequence:create(delay, cc.CallFunc:create(callback))
        node:runAction(sequence)
        return sequence
    end
     
    不难看出,这2个函数其实是用Action来实现了循环定时器和一次性回调定时器,按照这个思路也可以自己实现有限次调用的定时器
    小结:以上方法提供的定时器是和Node相关的,因此当Node被移除出场景或者其他情况下,这类回调定时器将会被取消
     
    如果要用到独立于Node的定时器,那么就要是用Scheduler的定时器函数了,
    在引擎根目录/cocos/scripting/lua-bindings/manual的lua_cocos2dx_manual.cpp文件中定义了scheduleScriptFunc和unscheduleScriptEntry两个函数,分别用来加入和删除定时器
    例子代码如下:
     
    local callbackEntry =nil
    local function callback(dt)
      cclog("callback")
      cc.Director:getInstance():getScheduler():unscheduleScriptEntry(callbackEntry)
    end
     
    callbackEntry = cc.Director:getInstance():getScheduler():scheduleScriptFunc(callback, 3, false)
     
    其中scheduleScriptFunc的三个参数分别是
    callback: 回调函数,Scheduler会传递给回调函数一个参数dt,表示距离上次回调所经过的时间
    delay:每次调用回调函数的时间间隔
    pause: 是否停住,一般设为false就行,否则定时器停住不执行
    scheduleScriptFunc的返回值是一个定时器凭据,该凭据用于在需要删除对应的定时器时传入作为参数,正如上面的例子代码所示
  • 相关阅读:
    再见,我的二零一七
    Tomcat 源码分析(二)——Request处理全过程
    帅案之上——作为开发者的远见与卓识
    Tomcat 源码分析(一)——启动与生命周期组件
    从代码质量谈起
    Java设计模式(四)——再谈观察者模式
    你所不了解的五条面试忠告
    见微知著——从自定义类型的operator==说起
    编码、散列与加解密
    数据结构与算法(c++)——双缓存队列
  • 原文地址:https://www.cnblogs.com/mingfuqishi/p/7833443.html
Copyright © 2011-2022 走看看