<script> //document.οnkeydοwn=keydown //document.οnkeyup=keyup var $=function(objId) { return document.getElementById(objId); } Array.prototype.remove=function(keypos) { var j=0; for(var i=0;i<this.length;i++) { if(this[i]!=keypos) { this[j]=this[i]; j=j+1; } } this.pop(); } function KeyControl() { this.Active=true; this.speed=10; this.timecontrol=50; this.KeyCode=new Array(); this.a="aaa"; this.ControlObject=new Array(); this.obj=null; //alert(this.a); this.direct=new Array(this.top,this.left,this.right,this.down,this.topleft,this.downleft,this.topright,this.downright); //alert(this.direct[0].arrKey); } KeyControl.prototype= { top: {name:"top",arrKey:new Array('38'),xpos:"",ypos:"-"}, left: {name:"left",arrKey:new Array('37'),xpos:"-",ypos:""}, right: {name:"right",arrKey:new Array('39'),xpos:"+",ypos:""}, down: {name:"down",arrKey:new Array('40'),xpos:"",ypos:"+"}, topleft: {name:"topleft",arrKey:new Array('38','37'),xpos:"-",ypos:"-"}, downleft: {name:"downleft",arrKey:new Array('37','40'),xpos:"-",ypos:"+"}, topright: {name:"topright",arrKey:new Array('38','39'),xpos:"+",ypos:"-"}, downright: {name:"downright",arrKey:new Array('39','40'),xpos:"+",ypos:"+"}, nocontrol:"nocontrol" } KeyControl.prototype.keyup=function() { var keypos=event.keyCode; this.KeyCode.remove(keypos); //alert(this.KeyCode.length); } KeyControl.prototype.Add=function(objId) { this.ControlObject[this.ControlObject.length]=objId; } KeyControl.prototype.Remove=function(objId) { this.ControlObject.remove(objId); } KeyControl.prototype.Direct=function() { var stack=null; //alert(this.KeyCode.length); for(var i=this.KeyCode.length-1;i>=0;i--) { //alert(this.KeyCode.length); if(stack==null) { for(var j=0;j<4;j++) { //alert(this.direct[j].arrKey[0]); //alert(this.KeyCode[i]); if(parseInt(this.KeyCode[i])==parseInt(this.direct[j].arrKey[0])) { stack=this.direct[j].arrKey[0]; break; } } } else { for(var j=4;j<this.direct.length;j++) { for(var k=0;k<this.direct[j].arrKey.length;k++) { if(parseInt(this.KeyCode[i])==parseInt(this.direct[j].arrKey[k])) { if(k==0&&parseInt(stack)==parseInt(this.direct[j].arrKey[1])) { return this.direct[j]; break; } else if(k==1&&parseInt(stack)==parseInt(this.direct[j].arrKey[0])) { return this.direct[j]; break; } } } } } } if(stack!=null) { for(var j=0;j<4;j++) { if(parseInt(stack)==parseInt(this.direct[j].arrKey[0])) { return this.direct[j]; break; } } } else { return null; } } KeyControl.prototype.Move=function() { var _direct=this.Direct(); if(_direct==null) { return false; } if(_direct.xpos.length>0) { if(_direct.xpos=="+") { var objNodes=this.ControlObject; for(var i=0;i<objNodes.length;i++) { if($(objNodes[i]).style.left=="") { $(objNodes[i]).style.left=0; } $(objNodes[i]).style.left=parseInt($(objNodes[i]).style.left)+5; } } else { var objNodes=this.ControlObject; for(var i=0;i<objNodes.length;i++) { if($(objNodes[i]).style.left=="") { $(objNodes[i]).style.left=0; } $(objNodes[i]).style.left=parseInt($(objNodes[i]).style.left)-5; } } } if(_direct.ypos.length>0) { if(_direct.ypos=="+") { //objNodes[i].top=parseInt(objNodes[i].style.top)+5; var objNodes=this.ControlObject; for(var i=0;i<objNodes.length;i++) { if($(objNodes[i]).style.top=="") { $(objNodes[i]).style.top=0; } $(objNodes[i]).style.top=parseInt($(objNodes[i]).style.top)+5; } } else { var objNodes=this.ControlObject; for(var i=0;i<objNodes.length;i++) { if($(objNodes[i]).style.top=="") { $(objNodes[i]).style.top=0; } $(objNodes[i]).style.top=parseInt($(objNodes[i]).style.top)-5; } } } } KeyControl.prototype.keydown=function() { var keypos=event.keyCode; var flag=true; for(var i=0;i<this.KeyCode.length;i++) { if(keypos==this.KeyCode[i]) { flag=false; break; } } if(flag) { this.KeyCode[this.KeyCode.length]=keypos; } //alert(this.KeyCode.length); //objTemp.keydown.call(objTemp); } Function.prototype.bind=function() { var self = this; var arg = arguments; return function() { self.apply(null,arg); } } var objTemp=new KeyControl(); objTemp.Add("div1"); var f=function() { objTemp.keydown(); } var f1=function() { objTemp.keyup(); } f2=function() { objTemp.Move(); window.setTimeout("f2()",200); } document.οnkeydοwn=f; document.οnkeyup=f1; f2(); </script> <div id="div1" style="position:absolute;">lxy</div>