LoginSignup
8
8

More than 5 years have passed since last update.

tmlib.jsでのアセットのロード

Last updated at Posted at 2014-07-07

tmlib.jsでは、画像や音声等の素材を使用する前にロードしておくためにtm.ui.LoadingSceneを使います。

画像のロード

以下、"hiyoko.png"という画像をスプライトに貼って画面に出すコード例です。

画像のロードとスプライトの表示
tm.main(function() {

    var app = tm.display.CanvasApp("#app");

    // LoadingSceneを作成
    // "hiyoko.png"をロードし、"piyo"という名前で登録する
    // ロード完了後、MainSceneへ遷移する
    var loadingScene = tm.ui.LoadingScene({
        assets: {
            "piyo": "hiyoko.png"
        },
        nextScene: MainScene
    });

    app.replaceScene(loadingScene);

    app.run();

});

// メインシーン
tm.define("MainScene", {
    superClass: "tm.app.Scene",
    init: function() {
        this.superInit();

        // 事前ロードした画像を使い、スプライトを作成・表示
        tm.display.Sprite("piyo", 32, 32)
            .setFrameIndex(0)
            .setPosition(200, 200)
            .addChildTo(this);

    }
});

tm.asset.Manager

LoadingSceneによってロードされたアセットは、裏でtm.asset.Managerというオブジェクトに登録されます。

Sprite等を経由せず、直接これらのアセットを取得したい場合は、tm.asset.Manager.getメソッドを使用します。

画像の場合、アセットはtm.asset.Textureクラスのインスタンスとして格納されています。

画像を直接取り出す

var texture = tm.asset.Manager.get("piyo");
console.log(texture instanceof tm.asset.Texture); // ==> true

アセットのデータ型

ロードしたアセットがどのクラスのインスタンスとして格納されるかは、アセットの拡張子によって決定されます。

たとえば以下のように"userdata.json"をロードした場合、tm.asset.Managerにはtm.util.Fileクラスのインスタンスとして登録されます。

JSONのロード
tm.main(function() {
    var app = tm.display.CanvasApp("#app");

    app.replaceScene(tm.ui.LoadingScene({
        assets: {
            "userdata": "userdata.json"
        },
        nextScene: MainScene
    }));

    app.run();
});

tm.define("MainScene", {
    superClass: "tm.app.Scene",

    init: function() {
        this.superInit();

        var userData = tm.asset.Manager.get("userdata");

        // userDataの型はtm.util.File
        console.log(userData.data.name);
        console.log(userData.data.age);
    }
});

サンプル

8
8
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
8
8