[Cocos2d-js] 一定時間後や間隔で処理行う schedule について

2017年12月25日(更新: 2017年12月25日)

Cocos2d-xのロゴ

Cocos2d-jsCocos2d-x)では、一定時間後にあるメソッド(関数)を実行させたいという時や、ある時間間隔で繰り返し処理を実行させたい時は schedule とその関連メソッドを利用します。

この記事では、以下の3つのメソッドについて紹介します。

以下の例では使用言語を javascript としていますが、C++ でも同様にメソッドが使用できます。

scheduleOnce

scheduleOnce は、指定した時間が経ったらあるメソッドを実行させたいという場合に利用します。

書式は以下の通りです。

this.scheduleOnce(実行するメソッド, 秒数);

第二引数で指定した秒数が経過した後に実行したいメソッドを、第一引数に指定します。例えば、以下は3秒後にコンソールに「テスト」と表示するコードです。

this.scheduleOnce(function() {
    cc.log("テスト");
}, 3);

scheduleUpdate

毎フレームごとに update という名前のメソッドが繰り返し呼び出されるようにするには scheduleUpdate を以下のようにコンストラクタ等に記載します。

this.scheduleUpdate();

メソッド update は以下のように定義します。このメソッドの引数は、1フレームあたりの更新時間を表します。

var TestLayer = cc.Layer.extend({
    ctor:function () {

        this._super();

        this.scheduleUpdate();
    },
    update: function(dt) {
        // dt秒ごとにこのメソッドが呼び出される
        cc.log(dt);
    }
});

var TestScene = cc.Scene.extend({
    onEnter:function () {
        this._super();
        this.addChild(new TestLayer());
    }
});

schedule

繰り返し実行するメソッドとその呼び出し間隔を任意で指定したい場合は schedule を使用します。

書式は以下の通りです。

this.schedule(繰り返し実行するメソッド, 呼び出す間隔(秒));

以下は、2.5秒毎にコンソールに「テスト」と表示する schedule の使用例です。

this.schedule(function() {
    cc.log("テスト");
}, 2.5);

第二引数の秒数を指定しなければ、scheduleUpdate と同様に毎フレームごとの呼び出しとなります。

おしまい

以上、Cocos2d-xで時間間隔の処理を行うための基本的なメソッドについてでした。

更に詳しい情報については以下のドキュメントをご覧ください。

cocos2d-x: Node Class Reference schedule

コメントを残す

メールアドレスが公開されることはありません。