0

表示する前にプリロードしたい画像を運ぶオブジェクトがあります。

情報は次のように保存されます。

 //var data =     ["images",{"ground":["0.png"]}]

次に、onLoadを使用してループし、表示されるようにロードされていることを確認します。ただし、最初のフレームに表示されない場合は、onLoadチェックのために確認します。

これは私が持っているものです:

function preLoad(data){
    gfx = new Array();
    count = 0;
    for(var i in data[1]){
        if (data[1].hasOwnProperty(i)) {
            ++count;

            gfx[i] = new Array();
            for(var j in data[1][i]){
                tmp = new Image();
                    tmp.onload = function(){
                        tmp.src = data[0]+'/'+data[1][i][j];
                        gfx[i].push(tmp);               
                }
            }           
        }   
    }

    window.gph = gfx;

    main();
}

私はこれを正しく理解しましたか?

4

2 に答える 2

0

onloadイベントではなく、onloadイベントの前にsrc属性を割り当ててみてください。

for(var j in data[1][i]){
    tmp = new Image();
    tmp.src = data[0]+'/'+data[1][i][j];
    tmp.onload = function(){
        gfx[i].push(tmp);               
    }
}    
于 2012-12-05T21:01:08.530 に答える
0

必要がある

a)onload内のアレイにコピーしますが、
b)onloadを割り当てた後、onload外にsrcをロードします

for(var j in data[1][i]){
  tmp = new Image();
  tmp.onload = function(){
    gfx[i].push(tmp);               
  }
  tmp.src = data[0]+'/'+data[1][i][j];
}  

最後に、for inのvarにoまたはobjを使用し、通常のforループのiを次のように使用するのが一般的な方法です。

for(var o in data[1])

for (var i=0;i<array.length;i++)

全体が少しにおいがします。gfxのvarはなく、Windowsスコープのvarにコピーします。

どうですか

function preLoad(obj){
  var data = obj[1], path=obj[0],tmp;
  window.gph = {};
  for(var o in data){
    if (data[o].hasOwnProperty(i)) {
      gph[o] = [];
      for(var p in data[o]){
        tmp = new Image();
        tmp.onload = function(){
          gph[o].push(tmp);               
        }
        tmp.src = path+'/'+data[o][p];
      }           
    }   
  }
  main();
}
于 2012-12-05T21:13:28.663 に答える