LoginSignup
4
4

More than 5 years have passed since last update.

スケジューリング処理(Cocos Code IDE, Lua言語)

Last updated at Posted at 2014-09-14

Cocos Code IDEを使ってLua言語で、一定時間ごとに処理を行うためのスケジューリングの基本です。

実行環境、IDE Cocos2d-xバージョン 言語
Cocos Code IDE Mac OS X 1.0.0-RC2 Cocos2d-x V3.2 Lua言語

サンプルコード

プロジェクトの新規作成で作成されるGameScene.luaのGameScene.create()を書き換えます。

GameScene.lua/GameScene.create
function GameScene.create()
    local scene = GameScene.new()

    local function func(dt)
        print(string.format("%f", dt)) -- dtには前回の呼び出しからの経過時間が入ります。
    end

    local schedulerID = cc.Director:getInstance():getScheduler():scheduleScriptFunc(func, 5, false)

    return scene
end

実行すると5秒毎にfunc関数が呼び出されます。

解説

指定した時間間隔で関数を呼び出す

最初に呼び出される関数を準備します。ここでは関数名をfuncとしました。

local function func(dt)
    -- dtには前回の呼び出しからの経過時間が入ります。
end

スケジューラーに登録する

local schedulerID = cc.Director:getInstance():getScheduler():scheduleScriptFunc(func, 5, false)

この例では、5秒毎にfunc関数を呼び出します。呼び出される時間には必ず誤差があります。
最後の引数はfalseにします。
また、後でスケジュールを停止できるようにIDを保存しておきます。

スケジュールを停止するとき

-- schedulerIDにはスケジューラーのIDが入っているとして、
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(schedulerID)

必要がなくなった時や、exitイベントなどでスケジュールを停止します。
(イベントについては「イベント処理を行う」の投稿を参照してください。)

Cocos2d-xをC++で扱っていた時の、updateの代わりの関数を作る例

updateの代わりの呼び出される関数を準備します。(サンプルプログラムの関数名がtickでしたので、そのままtickを使っています。)

local function tick(dt)

end

次に毎フレームtickを呼び出すようにします。時間には0を指定します。

-- 毎フレームtickを呼び出す
local schedulerID = cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick, 0, false)

必要がなくなった時や、exitイベントなどでスケジュールを停止します。
(イベントについては「イベント処理を行う」の投稿を参照してください。)

-- スケジュールを停止するとき
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(schedulerID)
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4