1

PreloadJS を使用して画像をプリロードし、その後、それらを HTML5 Canvas 内のコンテナーの子として出力しています (どれも DOM にアクセスできません)。今知りたいのは、後でこれらのビットマップを取得する方法です。

var preload = new createjs.LoadQueue(true, 'img/');
var manifest = [
    {src: 'fred.png', id: 'pri', type: 'sprite', x: 400, y: 500},
    {src: 'banana.png', id: 'door', type: 'sprite', x: 300, y: 500},
]
preload.addEventListener('progress', handleProgress);
preload.addEventListener('complete', handleComplete);
preload.addEventListener('fileload', handleFileLoad);
preload.loadManifest(manifest);

var image = [];
function handleProgress(event) {

}
function handleComplete(event) {
    for(var i = 0; i < image.length; i++) {
        var item = image[i];
        bg = new createjs.Bitmap('img/'+item.src).set({
            x: item.x,
            y: item.y
        });
        world.addChild(bg);
    }
    canvas.update();    
}
function handleFileLoad(event) {
    image.push(event.item);
}

preload.getItem('door').visible = false; が機能しないことを試しました。preload.getResult('ドア').visible = false; preload.getResult('ドア', true).visible = false;

この方法でインスタンスを参照し、それらの値を変更できると想定していました。プリロード セグメントに追加する必要があるものですか、それとも間違った方法で画像を参照していますか? を実行するconsole.log(preload.getResult('door'))と、多くの奇妙な文字が表示されます。これは、解析中の画像ファイルだと思います (?)

別の方法として、プリロード ビットのプロパティとして を設定して、後でorなどidを介してアクセスできるようにすることもできますが、それを行うには、PreloadJS に既に組み込まれているメソッドが必要だと思います。bg[0]bg[1]

bg = new createjs.Bitmap('img/'+item.src).set({
            x: item.x,
            y: item.y,
            id: item.id
});
4

2 に答える 2

4

@Olsnの応答はほとんど正しいです。ただし、画像または画像へのパスをビットマップに渡す必要があります。ID は、LoadQueue から結果を検索する場合にのみ役立ちます (悪い考えではありませんが、おそらくそのように動作するはずです)。

var image = preload.getResult("pri");
var bitmap = new createjs.Bitmap(image);

@olsnが正しく述べたように、画像が読み込まれるのを待つ必要はありません-パスを渡すだけで、ステージを更新する限り(ティックで、またはプリロードが完了したら)、画像が表示されます。

于 2013-06-25T03:52:48.463 に答える