0

Javascript を学習するための初歩的なゲームを作成し、画像を使用して HTML キャンバスに描画しています。ゲームの開始時に画像が表示されるように画像をプリロードしますが、最初に画像が表示されなくなり、リロードされていることが示唆されます。

これは、ページの読み込み時に実行されます。

function preload() {
for (i = 0; i < preload.arguments.length; i++){
    images[i] = new Image();
    images[i].src = preload.arguments[i];
    }
}
preload("images/background.png", "images/character.png", "images/dragon.png", "images/humanOpponent.png","images/ooze.png","images/tinyCharacter.png");

戦闘が始まったときに呼び出される関数の一部 - このコードがずさんで、ここで処理されるものは別の場所で処理する必要があることは知っていますが、それは質問の焦点では​​ありません:

youImage.src = "images/character.png";
background.src = "images/background.png";

if (oppType == "Human")
    {oppHealth = humanOpp.maxHP;
    oppImage.src = humanOpp.image;}
if (oppType == "Ooze")
    {oppHealth = ooze.maxHP;
    oppImage.src = ooze.image;}
if (oppType == "Dragon")
    {oppHealth = dragon.maxHP;
    oppImage.src = dragon.image;
    youImage.src = "images/tinycharacter.png";
    background.src = "images/castleBackground.png";}

この関数が呼び出されたときに画像がリロードされていると思いますが、この正確なコードはゲームの起動時に呼び出され、そこに画像が表示されます。だから私は困惑しています。

4

1 に答える 1

0

次のように変更することは理にかなっていますか?

var preloadedImages = {};
function preload(images) {
    for (i = 0; i < images.length; i++){
      var img = new Image();
      img.src = images[i][1];
      preloadedImages[images[i][0]] = img;
    }
}
preload([["dragon", "images/dragon.png"], ["human", "images/humanOpponent.png"]]);

次に、次を使用できます。

if (oppType == "Human") {
    oppHealth = humanOpp.maxHP;
    oppImage = preloadedImages['human'];
}
于 2013-10-14T16:10:42.307 に答える