Javascript游戏,模块raph​​ael没有定义

时间:2011-10-21 11:02:39

标签: javascript raphael

我正在开发一个游戏引擎: http://synodins.com/apps/tank_fight 但是现在,由于某种原因,它不再运行了。 我无法启动Raphael模块,当我使用mozilla web调试器运行网站时,我得到“Raphael未定义”。 但这没有任何意义,因为它在raphael.js模块中已经非常明确地定义了。

此外,游戏运行良好,就像我每次尝试20次一样。 并且没有明确的模式来说明它的工作原理 我在尝试启动raphael之前打印出Hello world 1,并在尝试之后打招呼世界2 谁能看出问题是什么?

3 个答案:

答案 0 :(得分:5)

load_script调用块异步加载脚本。这就是为什么似乎没有明确的模式。

无法保证raphael.js被加载(因此,Raphael被定义)到行的时间:

var playing_area = Raphael(0,50,1600,1600);

被召唤。

在尝试使用外部脚本中定义的变量之前,您应该等到整个文档准备就绪。在正常情况下,这是文档的onload事件。像jquery这样的各种库也提供了自己的“就绪”事件,如果你使用它们,你可以绑定它们。

你有没有理由以你的方式加载脚本,而不是简单地使用标记,如下所示?

<script src="raphael.js"></script>

答案 1 :(得分:1)

您正在按需加载脚本 - 这将加快您的初始页面加载速度。但是在那之后你尝试在raphael.js中执行代码 - 但加载js文件需要一些时间,你必须确保在开始调用它们之前加载它们。

您可以查看Modernizer.load() - 这可以帮助您同步加载资源并在加载完成时添加回调:http://www.modernizr.com/docs/#load

答案 2 :(得分:1)

您是否尝试过将'raphael.js'移到其他地方之前?可能拉斐尔没有定义它上面的剧本需要它。