html和js代码,哪里不对呢?我想要实现让小人动,可是只有init()中的初始化可以运行,到move(cxt)开始就不对了,求大神帮忙
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTML5 代码结构示例</title>
<script  type="text/javascript" src="jquery.min.js"></script></head><body onLoad="init()">
<!--<audio autoplay loop src="game_ball_bgm.mp3"></audio>--><div style="width:800px;margin:100px auto auto auto;height:480px;background:src(startbg.jpg);">
<canvas id="aa" width="800" height="480"  style="border:1px solid #c3c3c3;">
</canvas>
</div><script  type="text/javascript" src="aa.js"></script></body>
</html>// JavaScript Document
var t=0;//时间初始化
Cordinate=0;//初始坐标
var forward=2;function move(cxt)
{
cxt.clearRect(0,0,800,480);
cxt.drawImage(bg,0,0,800,480);
cxt.drawImage(people,Cordinate,420,36,60);  
setTimeout(move,10);
}function person()
{
if(forward==0)
Cordinate+=0.1;
else if(forward==1)
Cordinate-=0.1;
}
$(document).keydown(function(event)  
{


switch(event.which){
case 37:forward=1;break;
case 39:forward=0;break;
default:break;  
}
});
function init()
{
var c=document.getElementById("aa");
    var cxt=c.getContext("2d");
var imgarr=new Array("startbg.jpg",
"person_goleft_even.png",
"person_goleft_odd.png",
"person_goright_even.png",
"person_goright_odd.png",
"person_stand_even.png",
"person_down_even.png",
"person_down_odd.png")
    var bg=new Image();
    bg.src=imgarr[0];                       
    cxt.drawImage(bg,0,0,800,480);
    var people=new Image();
    people.src=imgarr[3];
    cxt.drawImage(people,0,420,36,60);
move(cxt);
}

解决方案 »

  1.   

    setTimeout(move,10);换成setTimeout("move()",10);试试。用alert或者firebug调试一下。
      

  2.   

    setTimeout(move,10);这个只会运行一次的,用IE8的 调试看看 第一是否JS代码有错误,JS代码有错误是一句都不会执行的,第二看看那里的值不是你预期的
      

  3.   

    setTimeout(function(){move(cxt);},10);
    是需要传cxt么?你那样第二次执行开始就会出错了,因为没有传参数
      

  4.   


    没错,你setTimeout函数也必须带参数进去的。
      

  5.   

    我感觉是person根本没被调用,我应该怎么把person用起来呢
      

  6.   

    setTimeout(move,10);
    改成
    setTimeout(function(){move(cxt);},10);
    试试...
      

  7.   

    那得把cxt作为全局变量吧,把var cxt放在js头部而不是放在init()里面