LoginSignup
16
14

More than 5 years have passed since last update.

CreateJSのスプライトシートで時間ベースのアニメーションをする方法

Posted at

スプライトシートアニメーションをスペックの異なるデバイス環境で同じように動作させたい

フレームレートが異なるからアニメーションが違って見えてしまう

時間ベースにすることで解決

// スプライトシートの作成
var spriteSheet:createjs.SpriteSheet = new createjs.SpriteSheet(data)
// アニメーションの作成
var effect:createjs.BitmapAnimation; = new BitmapAnimation(spriteSheet);
this.addChild(effect);

// 時間ベースのフレーム制御
var numFrames:number = effect.spriteSheet.getNumFrames("run");
var sec:number = numFrames/30 * 1000; // 総フレーム数 * 目標FPS * 1000(ミリ秒)
var effectFrame = 0;
createjs.Tween
    .get(this)
    .to({effectFrame: numFrames}, sec, createjs.Ease.linear)
    .call(function (event:any) => {
    // 不要になったら表示ツリーから削除
        this.removeChild(effect);
    })
    .addEventListener("change", (event:any):any => {
        effect.gotoAndStop(this.effectFrame>>0);
    });

※こちらは通常の方法


// タイムラインベースのフレーム制御
effect.onAnimationEnd = function (event:any) => {
    // 不要になったら表示ツリーから削除
    this.removeChild(effect);
};
effect.gotoAndPlay("run");

16
14
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
16
14