2012-05-03 213 views
0

嗯,我正在用js编写一个使用HTML5画布的小游戏。我在HTML文件中获取了画布和标签,并在一个名为java.js的单独文件中获得了JavaScript。Javascript拒绝工作?

我在脚本的某个时刻收到了一些警报,以了解它是否在我的浏览器中加载html时运行。问题是它没有显示任何这些和JavaScript不加载。

最诡异的是萤火虫的作用:在“HTML”下,当我点击标签时,它显示完整的脚本,但在“脚本”下,它告诉我页面上没有javascript。

帮助?

我的html:

<body><canvas id="canvas" width="1000px" height="500px" style="border:1px solid #c3c3c3;">text</canvas> 
<script type="text/javascript" src="java.js"> 
</script></body> 

当我把脚本标记在头:

<head><script type="text/javascript" src="java.js"> 
    </script></head> 
<body><canvas id="canvas" width="1000px" height="500px" style="border:1px solid #c3c3c3;">text</canvas> 
    </body> 

我的JS:

alert('define'); 
var scrollx=0, 
scrolly=0, 
keyID=0, 
global = {}; 
global.players=[]; 
global.playermap=[]; 
var c=document.getElementById("canvas"), 
ctx=c.getContext('2d'); 
alert('init'); 

function pony (x,y, hspd, vspd) { 
alert("pony created!"); 
this.x = x; 
this.y = y; 
this.vsp = vspd; 
this.hspd = hspd; 
this.image = new Image(); 
this.image.src = "alien.png"; 
this.framenumber = 11; 
this.frameactual = 1; 
this.framespeed=0.8; 
this.frametime =50; 
this.framewidth = this.image.width/this.framenumber; 
this.frameheight = this.image.height; 
this.colorbody="#000000"; 
// 
this.nextframe = function() { 
this.frameactual=this.frameactual+this.framespeed; 
if (Math.round(this.frameactual)>this.framenumber){this.frameactual=1;} 
this.draw(); 
}; 
// 
this.draw = function() { 
this.frame=Math.round(this.frameactual); 
ctx.drawImage(this.image,(this.frame-1)*this.framewidth,0,this.framewidth,this.image.height,this.x-scrollx-(this.framewidth/2),this.y-scrolly-(this.image.height/2),this.framewidth,this.image.height); 
}; 
// 
//var _this=this; 
//this.frametimer=setInterval(function(){_this.nextframe();},this.frametime); 
alert("time set"); 
} 
// 
function setpos_player(id,x,y,hspd,vspd){ 
alert("this"); 
if (typeof(global.playermap[id])=="undefined"){ 
global.players.push(new pony (x,y, hspd, vspd)); 
global.playermap[id]=global.players.length;} 
else{ 
global.players[global.playermap[id]].x=x; 
global.players[global.playermap[id]].y=y; 
global.players[global.playermap[id]].hspd=hspd; 
global.players[global.playermap[id]].vspd=vspd;} 
} 
// 
function clear(){ 
    ctx.fillStyle = "#FFFFFF"; 
    ctx.beginPath(); 
    ctx.rect(0,0,1000,1000); 
    ctx.closePath(); 
    ctx.fill();} 

document.onkeypress = KeyCheck; 
document.onkeydown = KeyCheck;  
document.onkeyup = KeyRelease; 

function KeyCheck(e) 

{ 
    keyID = (window.event) ? event.keyCode : e.keyCode; 
    } 
function KeyRelease(e) 
{keyID=0;} 

// 
function step(){ 
clear(); 
for (var i = 0; i < global.players.length; i++) { 
    _this=global.players[i]; 
    _this.y+=_this.vspd; 
    _this.nextframe(); 
    //Do something 
} 
//global.players[1].nextframe(); 
timer=setTimeout(function(){step();},80); 
} 
setpos_player(1,200,200,0,1); 
var timer=setTimeout(function(){step();},80); 
+1

只是一个旁注。 'java.js'没有任何意义。 'javascript'不是'java'。 – OptimusCrime

+0

那它是哪个?小马或外星人? – ChaosPandion

+0

你还没有接受任何答案!如果您想要更好的回应,请提高。 –

回答

4

看来你在这里有一个错误:

if (typeof(global.playermap[id])="undefined"){ 

应该

if (typeof(global.playermap[id])=="undefined"){ 

还,尝试更换所有alert调用console.log,然后检查了控制台犯错

+0

您是否知道JS使用翻译器,并且实际上在涉及此通道时会显示错误。描述的问题是没有加载js文件 - >没有显示allert。 –

+0

* facepalm *我怎么能错过,谢谢。 – Wingblade

+0

很高兴能帮到你。 –

-1

尽量把对正确的目录路径.js文件。例如,它可能是/java.js或“/scripts/java.js”。

如果您的警报弹出,则显示javascript是否已加载。

此外,您应该知道脚本标记,外部.js应添加到HEAD部分。

+0

我看到很多应用程序在javascript中正常加载时工作得很好,但是我会尝试将它加载到头部。 – Wingblade

+0

外部JS文件应该加载在文档的底部......就在关闭正文标签之前。 –

+0

不,不在头上工作。 – Wingblade

0

声明脚本,你在HTML 使用它之前,你可以把这个脚本在页面的头部像这样

<head> 
<script type='text/javascript' src='java.js'></script> 
</head> 

尝试了一次,重播这里

+0

试过并没有工作,将在这里添加我的帖子。 – Wingblade

0
if (typeof(global.playermap[id])="undefined"){ 

if (typeof global.playermap[id] == "undefined"){