我創建了一個小型JavaScript遊戲,並在所有主流瀏覽器的本地計算機上進行了測試,並且工作正常。之後,我上傳了我的託管服務器上的遊戲,並且遊戲不會在Chrome中顯示,畫布區域是灰色的,但在Firefox中它工作正常,任何人都知道爲什麼?這裏是鏈接的演示Chrome canvas渲染問題
http://djordjepetrovic.rs/igrica/
我創建了一個小型JavaScript遊戲,並在所有主流瀏覽器的本地計算機上進行了測試,並且工作正常。之後,我上傳了我的託管服務器上的遊戲,並且遊戲不會在Chrome中顯示,畫布區域是灰色的,但在Firefox中它工作正常,任何人都知道爲什麼?這裏是鏈接的演示Chrome canvas渲染問題
http://djordjepetrovic.rs/igrica/
在你catcher_game.js
文件,我發現至少在這:
draw: function(){
basket_catcherImg = new Image();
basket_catcherImg.src = 'images/basket.png';
ctx.drawImage(basket_catcherImg, this.x, this.y, this.w, this.h);
// ...
這將不能很好地工作。它在您的計算機上在本地工作,因爲圖像是從磁盤緩存的。
加載圖像是一個異步操作,以便您的drawImage
需要等到加載圖像 - 正確的方法是:
draw: function(){
var me = this;
basket_catcherImg = document.createElement('img');
basket_catcherImg.onload = function() {
ctx.drawImage(basket_catcherImg, me.x, me.y, me.w, me.h);
}
basket_catcherImg.src = 'images/basket.png';
//...
你需要與IMG的其他這樣的情況下做到這一點。
你需要me
這裏的原因是因爲this
更改爲號召的onload回調時的圖像元素。因此,您需要保留對原始this
上下文的引用。
同時將new Image()
更換爲createElement('img')
,因爲目前有an issue in Chrome不能正確處理此問題。
好的圖形的方式!
謝謝你!它現在很好用! :))))))) – chipatama
它加載到我的Chrome OSX獅子上。 – CharliePrynn
有趣的是,它在同一瀏覽器中工作,但從本地服務器,當我主持文件畫布是灰色的:S – chipatama
調試控制檯中是否有任何錯誤? – CharliePrynn