<HTML><HEAD><TITLE>人物移动</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</head>
<body>
<span id="debug" style="position:absolute;left=0;top=0;z-index:0"></span>
<span id="debug2" style="position:absolute;left=0;top=0;z-index:1"></span>
<table border=1>
<tr>
<td>
<span id="span_main" style="position:absolute;left=0;top=0;OVERFLOW:hidden;width:575px;height:384px;background-color:#efefef;">
<!--背景-->
<span id="bj" style="position:absolute;left=0;top=0;width:575px;height:384px;">
<table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0"><tr><td></td></tr></table>
</span>
<!--角色-->
<SPAN id=spn1 style="position:absolute;left=0;top=0;OVERFLOW: hidden; WIDTH: 64px; HEIGHT: 64px;filter:Glow(strength=12,color=red);"><IMG src="images/play_move/1.gif"></SPAN>
<script>
i = 0;
function move_test(){
i++;
span_main.scrollLeft = i;
//alert(span_main.scrollTop);
setTimeout("move_test();",100);
}
//move_test();
//document.onmousemove=new Function("window.status=event.x+','+event.y;");
var target_posx=1,target_posy=1,theTimeout=0,theTimeout2=0;
document.onmousemove = view_pos;
function view_pos(){
window.status = (parseInt(event.x)-64)+","+(parseInt(event.y)-64)+"|"+event.offsetX+","+event.offsetY;
}
if (document.all)
document.body.onmousedown = set_pos;
function set_pos(){
if(parseInt(event.x) > 570 || parseInt(event.x) < 0 || parseInt(event.y) >384 || parseInt(event.y) < 0){
return;
}
//目标坐标留出人物的高宽...不要走到屏幕外面
target_posx = parseInt(event.offsetX-32);
target_posy = parseInt(event.offsetY-48);
clearTimeout(theTimeout);
move();
//move_screen();
debug2.innerHTML = "X:"+target_posx+"Y:"+target_posy+"[目的地]";
}
function move(){
var bc = 8;
var a_bc = 0;
var b_bc = 0;
var a = 0;
var b = 0;
var c = 0;
now_posx = parseInt(spn1.style.left);
now_posy = parseInt(spn1.style.top);
a = Math.abs(target_posx-now_posx);
b = Math.abs(target_posy-now_posy);
c = Math.ceil(Math.sqrt(a*a+b*b))
//document.write("a is"+a+"<br>b is"+b+"<br>c is "+c);
a_bc = (a/c)*bc;
b_bc = (b/c)*bc;
if(isNaN(a_bc) && isNaN(b_bc)){
spn1.scrollLeft = 0;
clearTimeout(theTimeout2);
clearTimeout(theTimeout);
theTimeout2 = 0;
return;
/***自动走***/
//target_posx= Math.round(Math.random()*800);
//target_posy = Math.round(Math.random()*500);
//theTimeout = setTimeout("move();",100);
}else{
//document.write(a_bc+"<br>"+b_bc);
//调定角色方向
var dir = set_dir(now_posx,now_posy,target_posx,target_posy);
spn1.scrollTop = (dir-1) * 64;
debug.innerHTML = "topx="+target_posx+"/lefty="+target_posy+"<br>x边长:"+a+"<br>y边长"+b+"<br>斜边长:"+c+"<br>X步长 is"+a_bc+"<br>Y步长 is"+b_bc+"<br>方向:"+dir+"<br>now_posx:"+now_posx+"<br>now_posy"+now_posy+"<br>target_posx"+target_posx+"<br>target_posy"+target_posy;
if(now_posx != target_posx){
if(now_posx > target_posx){
now_posx -= a_bc;
if(now_posx <= target_posx){
now_posx = target_posx;
}
spn1.style.left = now_posx;
//span_main.scrollLeft -= a_bc;
//span_main.scrollLeft = now_posx;
}else{
now_posx += a_bc;
if(now_posx >= target_posx){
now_posx = target_posx;
}
spn1.style.left = now_posx;
//span_main.scrollLeft += a_bc;
//span_main.scrollLeft = now_posx;
}
}
if(now_posy != target_posy){
if(now_posy > target_posy){
now_posy -= b_bc;
if(now_posy <= target_posy){
now_posy = target_posy;
}
spn1.style.top = now_posy;
//span_main.scrollTop -= b_bc;
//span_main.scrollLeft = now_posy;
}else{
now_posy += b_bc;
if(now_posy >= target_posy){
now_posy = target_posy;
}
spn1.style.top = now_posy;
//span_main.scrollTop += b_bc;
//span_main.scrollLeft = now_posy;
}
}
//alert(span_main.scrollHeight);
//alert(span_main.scrollWidth);
span_main.scrollLeft = parseInt(now_posx) - (parseInt(span_main.style.width)/2);
span_main.scrollTop = parseInt(now_posy) - ((parseInt(span_main.style.height)/2) - 64);
//这里设定镜头的位置,使角色在正中央
/*
while(parseInt(now_posx) != parseInt((parseInt(span_main.style.width)/2-16))){
if(parseInt(now_posx) > parseInt((parseInt(span_main.style.width)/2-16))){
span_main.scrollLeft ++;
next_scroll = span_main.scrollLeft ++;
if(parseInt(span_main.scrollLeft) == next_scroll){
break;
}
}else{
span_main.scrollLeft --;
if(parseInt(span_main.scrollLeft) == 0){
break;
}
}
}
//这里设定镜头的位置,使角色在正中央
while(parseInt(now_posy) != parseInt((parseInt(span_main.style.height)/2-32))){
if(parseInt(now_posy) > parseInt((parseInt(span_main.style.height)/2-64))){
span_main.scrollTop ++;
next_scroll = span_main.scrollTop ++;
if(parseInt(span_main.scrollTop) == next_scroll){
break;
}
}else{
span_main.scrollTop --;
if(parseInt(span_main.scrollTop) == 0){
break;
}
}
}
*/
if(theTimeout2 == 0){
theTimeout2 = setTimeout("show_a();",150);
}
theTimeout = setTimeout("move();",100);
}
return;
}
//调定角色方向
function set_dir(now_posx,now_posy,target_posx,target_posy){
var dir;
if(target_posx > now_posx){
if(target_posy > now_posy){
dir = 6;
}
if(target_posy == now_posy){
dir = 3;
}
if(target_posy < now_posy){
dir = 8;
}
}
if(target_posx < now_posx){
if(target_posy > now_posy){
dir = 5;
}
if(target_posy == now_posy){
dir = 2;
}
if(target_posy < now_posy){
dir = 7;
}
}
if(target_posx == now_posx){
if(target_posy > now_posy){
dir = 1;
}
if(target_posy < now_posy){
dir = 4;
}
}
return dir;
}
i = 0;
function show_a(){
i += 64;
//alert(i);
if(i<=128){
spn1.scrollLeft = i;
}else{
i = 64;
spn1.scrollLeft = i;
}
theTimeout2 = setTimeout("show_a();",150);
}
/**自动走第一步**/
//move();
//定义角色初始位置;
spn1.style.left = parseInt(span_main.style.width) / 2 - 135;
spn1.style.top = parseInt(span_main.style.height) / 2 - 70;
</script>
</body>
</html>