我正在使用 HTML5 画布和 JavaScript 创建一个基于 Web 的基本游戏。虽然我之前对 HTML5 画布做过一些工作,但它并没有太广泛,因此不需要太多的 JavaScript——这意味着我在我的 .html 文件的脚本标签中编写了 JavaScript。
有了我目前正在处理的文件,我现在需要将 JavaScript 与 HTML 分开,因为当我在浏览器中查看页面并单击画布上的“开始”按钮时,尽管它确实执行了它应该执行的功能,但它需要很长时间才能完成......我假设是因为我的 .html 文件的大小(其中大部分是 JavaScript)。
我已将所有 JavaScript 移动到单独的文件中,每个文件中只有一两个函数,但我不确定如何在我的 HTML 页面中使用这些函数?
我的 HTML 文件目前如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<section hidden>
<img id="StartButton" src="StartButton.png" alt="Start Button" width="179" height="180" href="javascript:drawLevelOneElements();"/>
</section>
<script src = "drawLevelOneElements.js" type = "text/javascript"></script>
<script src = "layers&analytics.js" type = "text/javascript"></script>
<script src = "startGameDrawGameElementsDrawStartButton.js" type = "text/javascript"></script>
<script src = "variables&preloadingImages.js" type = "text/javascript"></script>
</head>
<body onLoad="startGame()">
<h1>Home</h1>
<p1>The purpose of this website is to teach users the basic principles of running a business by playing the game below. <br /><br /></p1>
<p2>
<canvas id="gameCanvas" width="1000" height="500" style="border:1px solid">
Your browser does not support the canvas element.
</canvas>
<br /><br /></p2>
<p3>Use this paragraph to enter text that provides the user with instructions for how to play the game. <br />
Update the instructions so that they're appropriate to whatever level the user is currently playing.</p3>
</body>
脚本 src 行引用了我想使用的 JS 文件,但是当我在浏览器中查看页面时,我只是得到一个空白画布。有人可以向我指出我在这里做错了什么吗?我不确定在将 JS 写入单独的文件时如何将其“附加”到 HTML。
干杯!
编辑 21/11/2012 12:00
进行了建议的更改后,我尝试再次在 Firefox 中查看该页面,并在 Firebug 控制台中,当页面加载时,它说我的一个 JS 文件中有一个“未终止的正则表达式文字。它抱怨的文件包含此 JS 代码:
/* Create a canvas layer to display text */
function displayText(textLayer, message){
var textLayerContext = textLayer.getContext();
textLayer.clear();
textLayerContext.font = "18pt Calibri";
textLayerContext.fillStyle = "black";
textLayerContext.fillText(message, 10, 10);
}
/* Create a canvas layer to display the button */
window.onload = function(){
var stage = new Kinetic.Stage({
container: "container",
width: 179,
height: 180
});
var buttonLayer = new Kinetic.Layer();
var textLayer = new Kinetic.Layer();
}
</script>
<script type="text/javascript">
/*Google analytics code for tracking website. */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-31216545-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
它抱怨的那条线是</script>
它现在可以工作了,但是在单击开始按钮后加载图像所需的时间方面,进行此更改似乎并没有提高性能......有什么建议吗?