0

HTML5 キャンバスを使用して js で小さなゲームをコーディングしています。キャンバスとタグを html ファイルで取得し、javascript を java.js という別のファイルで取得しました。

html をブラウザにロードしたときにスクリプトが実行されるかどうかを確認するために、スクリプトのある時点でいくつかのアラートを受け取りました。問題は、これらのいずれも表示されず、javascript が読み込まれないことです。

最も奇妙なのは、firebug の動作です。「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>

script タグを head に入れると、次のようになります。

<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);
4

4 に答える 4

4

ここにエラーがあるようです:

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

する必要があります

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

また、すべてのalert呼び出しを に置き換えconsole.logてから、コンソールでエラーを確認してください

于 2012-05-03T06:35:46.533 に答える
0

HTMLで使用する前にスクリプトを宣言すると、そのスクリプトを次のようにページの先頭に配置できます

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

一度試して、ここで再生してください

于 2012-05-03T06:30:41.147 に答える
-1

.js ファイルの正しいディレクトリ パスを入力してください。たとえば、/java.js または "/scripts/java.js" の場合があります。

JavaScript がロードされているかどうかは、アラートがポップアップした場合に示されます。

また、外部の .js を含むスクリプト タグを HEAD セクションに追加する必要があることも知っておく必要があります。

于 2012-05-03T06:26:18.373 に答える