簡體   English   中英

在Javascript中-如何在不重新加載的情況下更改變量指向的圖像?

[英]In Javascript - How do I change the image a variable points to without reloading it?

我正在做一個基本的游戲來學習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";}

我認為正在發生的事情是調用此函數時正在重新加載圖像,但是在游戲啟動時會調用此確切的代碼-圖像在那里顯示。 所以我感到困惑。

進行如下修改是否有意義?

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'];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM