1: 2015-05-22 (金) 05:55:14 njf[5] [6] [7] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Starlingで画像などを扱うとき、チュートリアルなどではembedでswfにリソースを埋め込んでしまっている場合が多いですが、実際のゲーム開発ではAssetManagerを使った方が良いです。 | ||
+ | 理由は | ||
+ | -embedではswfが読み込まれるまで処理が走らない。ローダーをつけるには別にロード用swfが必要となる | ||
+ | -textureの初期化には負荷がかかるので、読み込み後に一括で初期化するとモバイルなどでは最悪アプリが落ちる | ||
+ | -AssetManagerの方がtextureの管理が容易 | ||
+ | |||
+ | です。 | ||
+ | |||
+ | 使い方はまず読み込みが | ||
+ | var assets:AssetManager = new AssetManager(); | ||
+ | const RESOURCE_DIR:String = "resource/"; | ||
+ | assets.enqueue(dirName + "uiTexture.png"); | ||
+ | assets.enqueue(dirName + "uiTexture.xml"); | ||
+ | |||
+ | assets.loadQueue(function(ratio:Number):void | ||
+ | { | ||
+ | trace(int(ratio * 100) + "%"); | ||
+ | if (ratio == 1.0){ | ||
+ | loadEnd(); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | AssetManagerは読み込んだTextuerを自動で負荷を分散しながら初期化してくれます。 | ||
+ | |||
+ | 個々のTextureを取得するには、そのTextureがどのTextureAtlasにあるか意識する事無く、 | ||
+ | |||
+ | assets.getTexture("button.png") | ||
+ | |||
+ | として取得できます。 | ||
+ | |||
+ | TextureAtlasを取得することも出来ます。 | ||
+ | |||
+ | assets.getTextureAtlas("uiTexture") | ||
+ | |||
+ | ですが、なるべく上記getTextureを使うのをお勧めします。なぜなら、実際のゲーム開発ではtextureAtlasが複数になることが多く、また、その中の画像を入れ替えることも多いので、getTextureAtlasではそのたびにソースコードの変更が必要になるからです。 | ||
+ | getTextureであれば、どの画像がどのtextureAtlasにあるか知る必要がないのでtextureAtlasの変更にも対応しやすいです。 | ||
+ | |||
+ | AssetManagerは他にもxmlやサウンドにも対応しています。しかし、ゲーム設定が簡単に書き換えられたりできるようになるので、設定ファイルはembedの方が良いかもしれません。サウンドなども著作権の関係でそのままサイトに置くと問題があるかも知れません。モバイルなら問題ないですが。 | ||
+ | |||
+ | AssetManagerはembedしたリソースにも対応しています。 | ||
+ | |||
+ | 参考: | ||
+ | http://wiki.starling-framework.org/manual/asset_management |
(This host) = https://njf.jp