js 模拟鼠标控制小人移动
今天写了一个类似于鼠标控制小人移动的JS代码,直线移动的时候还好,斜线移动的时候就会出现转直角的情况。。。。还有,本来想把这个写成插件的形式,但是在div的click事件出现了问题。代码如下:高手们呐,help me!Help Me me me me ........  
代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>js模拟鼠标控制小人移动</title>
  <script type="text/javascript" language="javascript" src="js/jquery-1.4.2.js"></script>
<script language="javascript" type="text/javascript">
var strObjID,//移动divID
         strFrameID,//外框ID
         moveX,//移动div X轴移动事件
         moveY,//移动div Y轴移动事件
         unitLeft,//移动div  css的Left属性值
         unitTop,//移动div   css的Top属性值
         unitWidth,//移动div的宽
         unitHeight,//移动div的高
         frameWidth//框架div宽
         ,frameHeight,//框架div高
         step;//移动div每次移动的像素
function Unit(objID,objFrameID)
{
           strObjID=objID;
           strFrameID=objFrameID;
           var oUnit=document.getElementById(objID);
          var oFrame= document.getElementById(objFrameID);     
         if(oUnit.style.left=="")
         {
            unitLeft = 0;
         }  
         else
         {
           unitLeft = parseInt(oUnit.style.left);
         }            
         if(oUnit.style.top=="")  
         {
                       unitTop= 0;
         }
         else
         {
                       unitTops= parseInt(oUnit.style.top);
         }            
           unitWidth=parseInt(oUnit.style.width);
          unitHeight= parseInt(oUnit.style.height);           
            frameWidth=parseInt(oFrame.style.width);
            frameHeight=parseInt(oFrame.style.height);
            step=3;
}
  function getEventPosition(e,container) //构造对象
{  
        var rect = container.getBoundingClientRect();  
        this.x=e.clientX-rect.left;
        this.y=e.clientY-rect.top;
}  
function FrameClick(e)//Click调用函数
{
      clearInterval(moveX);
     clearInterval(moveY);  
       var positoin =new getEventPosition(e,document.getElementById(strFrameID));          
     var positionMaxX= frameWidth-parseInt(document.getElementById(strObjID).style.width);  
      var actualrangeX = positoin.x-unitWidth/2;//X轴实际移动距离
      if(actualrangeX>positionMaxX)
     {
        actualrangeX=positionMaxX;
     }      
      var positionMaxY= frameHeight-parseInt(document.getElementById(strObjID).style.height);
         var actualrangeY = positoin.y-unitHeight/2;//Y轴实际移动距离
        if(actualrangeY>positionMaxY)
     {
        actualrangeY=positionMaxY;
     }      
      moveX =  setInterval("xMove("+actualrangeX+")",10);
      moveY= setInterval("yMove("+actualrangeY+")",10);
}
function Actualrange(Positoin)
{
  return  Positoin-unitHeight/2;
}
function xMove(positoinX)//X轴移动
{
           if(unitLeft<positoinX)//向右
           {
               unitLeft+=step;
               if(unitLeft>frameWidth)
               {
                  unitLeft=positoinX;
               }
               if(u