2012-01-16 63 views
1

我正在爲javascript/HTML畫布製作遊戲。僅在全局變量中處理JavaScript圖像?

我想每個球員的對象存儲一組圖片, ,但它似乎像圖像功能可以在全局變量纔會發生。

下面是一個變通,我想出來的:

var image; 

    function loadPic(a){ 
     image = new Image(); 
     image.src = a; 
     return image; 
    } 

它使用這樣的:

pictures.push(loadPic(links[i])); 

其中的鏈接是路徑字符串數組。 現在,圖片(全局數組)不能被複制或用於任何東西。

我做得可怕的錯誤? https://github.com/kaninepete/Javascript-Games/blob/images/MVP.js

+0

你從哪裏得到這樣的想法,即Image對象只能被全局變量引用? (這是不正確的。) – Pointy 2012-01-16 16:27:09

+0

在我的反覆試驗中,試圖讓這個工作起來,這是我得出的結論。我很想被證明是錯誤的。 – Kaninepete 2012-01-16 16:38:06

+0

我假設你的意思是在你的形象分支https://github.com/kaninepete/Javascript-Games/tree/images在鏈接的代碼(下載此代表並運行MVP.html實際試用代碼) – aaaaaaaaaaaa 2012-01-16 16:57:56

回答

0

我沒有看到你鏈接到GitHub庫的任何圖像加載代碼,所以我不能看到源...爲@尖尖的評論上方,這裏是proof。請注意,在閉包內部,變量img是本地的,即在全局範圍中不可用,並且代碼運行得很好。

希望有幫助!乾杯。

+0

我現在鏈接到了正確的分支,對不起。 我很喜歡第90行: this.pics。推(loadPic(鏈接[I])); 但通過全球「圖片」是圖像顯示的唯一方式。 – Kaninepete 2012-01-16 17:13:48

0

我無法重現您所描述的錯誤,使image局部改變什麼,我試過IE 9,火狐5和Chrome。然而,我可以產生其他一些錯誤,在我修復這些代碼之前,代碼只能在Chrome中使用。

你缺一doctag,防止帆布從Internet Explorer 9中的工作,把<!DOCTYPE HTML>在HTML文檔的頂部。
您獲取和嘗試設置一個不存在的元素的innerHTML:$("score").innerHTML = score;,要麼刪除或做出相應的元素。
canvas.onmousedown = myDown;只適用於具有短切元素訪問瀏覽器,你應該使用$("canvas").onmousedown = myDown;

注意,在上面的代碼$被定義爲簡寫document.getElementById

+0

迄今爲止,我只在Chrome中進行過測試。 感謝您的建議! – Kaninepete 2012-01-16 17:17:13