日期:2014-05-16  浏览次数:20832 次

HTML5做的一个小动画有个奇葩的问题.....
用HTML5做个像flash一样的小球运动的动画,可是遇到个奇葩的问题....源代码如下:
<!DOCTYPE html>
<head>
<meta charset=utf-8>
<title>瞎玩呗</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<canvas id="canvas2" width="400" height="200"></canvas>

<script type="text/javascript">
var  c=document.getElementById("canvas2");
var c2=c.getContext("2d");
var width = 400;
var height = 200;
 var qidian=0; //设置线条起点
 var exp=1; //设置线条每次移动像
 c2.strokeStyle = "rgba(255,0,0,1)"; 
function jump(){
c2.clearRect(0,0,400,200)
c2.fillStyle="FF0000";
c2.beginPath();
c2.arc(180,qidian,20,0,Math.PI*2,1); 
c2.closePath();
c2.fill();

 qidian=qidian+exp; //起点+活动像素位置

 if(qidian==0 || qidian==height-1){ //判断当前线的位置,控制在区域内
   exp=exp*-1; //乘以负一用来调整线路方向
 }  

}
</script>
<input onclick="interval=setInterval(jump,1);" value="开始" type="button"/>
<input  onclick="clearInterval(interval);"value="停止" type="button"/>
</body>
</html>


正常情况下,小球是来回上下跳转的,但是上面的javascript中,定义了height和width两个变量,本来想在clearRect语句中用这两个变量来着,但是觉得没必要就注释了,但是吧,这两句定义变量的语句如果被注释掉小球就不会反弹回来,而是一直往下走....直到走出画布了都,,,,相当于那个if语句没用。定义个变量跟往返有什么联系么....在下刚学习HTML5,还望大神请教啊。
------解决方案--------------------
if(qidian==0 
------解决方案--------------------
 qidian==height-1){ //判断当前线的位置,控制在区域内
因为你的height是一个变量 之前没定义的话这个是会报错的不执行 改成if(qidian==0 
------解决方案--------------------
 qidian==200-1){也是可以的 var width = 400;这个可以注释掉 因为你没用到这个变量