Table of Contents
Cocos2d-js(Cocos2d-x)では、一定時間後にあるメソッド(関数)を実行させたいという時や、ある時間間隔で繰り返し処理を実行させたい時は schedule とその関連メソッドを利用します。
この記事では、以下の3つのメソッドについて紹介します。
- scheduleOnce : 一定時間後に一度だけ指定したメソッドを実行
- scheduleUpdate : 毎フレームごとにメソッド update を実行
- schedule: 指定した時間間隔で任意のメソッドを実行
以下の例では使用言語を 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で時間間隔の処理を行うための基本的なメソッドについてでした。
更に詳しい情報については以下のドキュメントをご覧ください。