我正在开发一个游戏引擎: http://synodins.com/apps/tank_fight 但是现在,由于某种原因,它不再运行了。 我无法启动Raphael模块,当我使用mozilla web调试器运行网站时,我得到“Raphael未定义”。 但这没有任何意义,因为它在raphael.js模块中已经非常明确地定义了。
此外,游戏运行良好,就像我每次尝试20次一样。 并且没有明确的模式来说明它的工作原理 我在尝试启动raphael之前打印出Hello world 1,并在尝试之后打招呼世界2 谁能看出问题是什么?
答案 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'移到其他地方之前?可能拉斐尔没有定义它上面的剧本需要它。