LoginSignup
10
9

More than 5 years have passed since last update.

createjs(0.7.1)のTimerFiredを完全に止める方法

Posted at

スマフォ向けに描画が終わったらtickイベントをとめたい

イベント初期化

こんな感じでtickイベントが始まるとします。

var stage = new createjs.Stage($('canvas').get(0));
createjs.Ticker.addEventListener('tick',stage);

この状態ですとスペックの低いPCですとProfile>idleが10%ぐらいになり、
PCのファンが悲鳴をあげます。

イベント(描画)停止

createjs.Ticker.setPaused(true);

あるいは

createjs.Ticker.removeEventListener('tick');

とやることで描画更新(update layer tree)は止まります。

しかしこれでもidleは50%前後になってしまいます。
これはcreatejsの内部でsetTimeoutを呼び出し続けているためです。

イベントの完全停止

createjs.Ticker.reset();
//0.7.1だと以下のプロパティが初期化されずに再スタートできなくなる
//masterだと修正されているのでそのうちいらなくなるっぽい
createjs.Ticker._timerId = null;
createjs.Ticker._inited = false;

はじめmasterを見ていたのでなんで再初期化できないのかすっごく悩んだ。。

イベントの再初期化

createjs.Ticker.init();
createjs.Ticker.setFPS(15);
createjs.Ticker.addEventListener('tick',stage);
//Tweenも使っているのであれば以下も必要
//createjs.Ticker.addEventListener('tick',createjs.Tween);
10
9
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
10
9