2014-03-03 37 views
0

对我来说,这是一个奇怪的现象。 我正在将我的游戏从ASCII移动到平铺图形,并且遇到问题。 设置图像预加载器后,我得到错误告诉我,各种东西是未定义的。 这里是图像加载功能:Javascript - 正在加载图片导致随机出现的内容不明

比我没有碰比

<body id="body" onload="preload();"> 

任何其他东西有任何想法这里发生了什么

function preload(){ 
     characterImage = new Image(); 
     characterImage.src = "images/character.png"; 

     groundImage = new Image(); 
     groundImage.src = "images/ground.png"; 

     wallImage = new Image(); 
     wallImage.src = "images/wall.png"; 

     doorImage = new Image(); 
     doorImage.src = "images/door.png"; 

     windowImage = new Image(); 
     windowImage.src = "images/window.png"; 

     creatureImage = new Image(); 
     creatureImage.src = "images/creature.png"; 

     stairImage = new Image(); 
     stairImage.src = "images/stairs.png"; 

     nullImage = new Image(); 
     nullImage.src = "images/null.png"; 
    } 

其他?

编辑:我发现这个问题,它是在主脚本执行前没有加载图像。咄。

+3

什么“各种东西”未定义?如果你的意思是你的图片,他们可能不会被加载。你需要在onImageLoad函数中附加一个函数,让你知道它们何时加载完成。 – zero298

+2

需要...更多... code :) – David

回答

0

只有在加载完所有内容后(包括图像),加载才会触发
- 所以在这一点上预加载似乎......愚蠢?

无论是简单地通过增加它们添加到HTML,并开始在onload事件
OR
在<头执行预载功能的游戏>和计数加载的图像的数量:

imageX.onload = function(){ if (++number==total) startGame() } 

(数字= 0和总数= 7是全局变量)

这里假设没有其他东西需要加载..可能需要组合..

-1
<body onload="preload();" > 

这意味着当身体被加载时,浏览器将执行预加载();

+0

这似乎只是重述问题作者提供的代码。 – squid314