†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

【enchant.js】プリロードじゃなくてロードを使いたい時

こんばんわ。
deokisiです。

画像リソースが全て揃っている場合にはプリロードで事足りるんですが、ゲーム開始以降は当然ながらプリロードは使えず、ロードを使う必要があります。
(ゲーム実行中に非同期に色んな人のtwitterアイコンとか表示したい時とか・・・)


ロードの場合にCB関数への通知が来るのですが、CB関数内でロードされた画像が何であるかわからないと期待するSpriteオブジェクトへの設定ができないです。
んー、どうやるんだろう?


CB関数内部でthisオブジェクトを探ってみると、_elementオブジェクトにsrcってのがあって、ここに画像のパスが格納されていました。
あー、これを使えば名前でチェックできそうですなー。

ロード開始時にこちらのthisオブジェクトにパラメータ追加とかできれば、もっとスマートにできそうなのですがよくわかんないので、これでやってこうかなと思います。


  • 参考
//3個のイメージファイルを読み込んで、imgurl順で画像を縦並びに表示する例.
var imgurl = ["hoge.jpg","foo.png","bar.png"]
var icon = [];

for(var i=0;i<3;i++){
	//画像をロードするよ
	game.load(imgurl[i],function(){
		//_element.srcをチェックして設定する配列番号確定.
    	for(var i=0;i<3;i++){
    		if(imgurl[i] == this._element.src){
    			icon[i] = new Sprite(48,48);
    			icon[i].image = game.assets[imgurl[i]];
    			icon[i].y = 48*i;
    			
    			scene.addChild(icon[i]);
    			break;
    		}
    	}
	});
}


であであ。