function moveElement(elementID,final_x,final_y,interval){
var elem = document.getElementById(elementID);
if(elem.movement){
clearTimeout(elem.movement);
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if(xpos == final_x && ypos == final_y){
return true;
}
if(xpos < final_x){
var dist = Math.ceil((final_x - xpos)/10);
xpos = xpos + dist;
}
if(xpos > final_x){
var dist = Math.ceil((xpos - final_x)/10);
xpos = xpos - dist;
}
if(ypos < final_y){
var dist = Math.ceil((final_y - ypos)/10);
ypos = ypos + dist;
}
if(ypos > final_y){
var dist = Math.ceil((ypos - final_y)/10);
ypos = ypos - dist;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);
}
function prepareSlideshow(){
var preview = document.getElementById("preview");
preview.style.position = "absolute";
preview.style.left = "0px";
preview.style.top = "0px";
var list = document.getElementById("linklist");
var links = list.getElementsByTagName("a");
links[0].onmouseover = function(){
moveElement("preview",-110,0,10);
}
links[1].onmouseover = function(){
moveElement("preview",-230,0,10);
}
links[2].onmouseover = function(){
moveElement("preview",-340,0,10);
}
}
addLoadEvent(prepareSlideshow)
if(xpos < final_x){
var dist = Math.ceil((final_x - xpos)/10);
xpos = xpos + dist;
}
if(xpos > final_x){
var dist = Math.ceil((xpos - final_x)/10);
xpos = xpos - dist;
}
if(ypos < final_y){
var dist = Math.ceil((final_y - ypos)/10);
ypos = ypos + dist;
}
if(ypos > final_y){
var dist = Math.ceil((ypos - final_y)/10);
ypos = ypos - dist;
}
这4条IF里面的语句怎么计算的啊.?我的头都大了.
我先来计算下.
第一条IF语句.0小于负110不成立.然后执行到第二条IF语句.
0大于负110条件成立.0减负110等于110,然后除以10等于11,然后赋值给dist变量.
然后0减11等于负11,然后第二次进行循环是怎么样的啊?大家帮我算算...
还有啊.在网页里观察了一次文字的走动形式.刚开始好像速度很快.快到目的地了就变慢了.慢的一小步的走
var elem = document.getElementById(elementID);
if(elem.movement){
clearTimeout(elem.movement);
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if(xpos == final_x && ypos == final_y){
return true;
}
if(xpos < final_x){
var dist = Math.ceil((final_x - xpos)/10);
xpos = xpos + dist;
}
if(xpos > final_x){
var dist = Math.ceil((xpos - final_x)/10);
xpos = xpos - dist;
}
if(ypos < final_y){
var dist = Math.ceil((final_y - ypos)/10);
ypos = ypos + dist;
}
if(ypos > final_y){
var dist = Math.ceil((ypos - final_y)/10);
ypos = ypos - dist;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);
}
function prepareSlideshow(){
var preview = document.getElementById("preview");
preview.style.position = "absolute";
preview.style.left = "0px";
preview.style.top = "0px";
var list = document.getElementById("linklist");
var links = list.getElementsByTagName("a");
links[0].onmouseover = function(){
moveElement("preview",-110,0,10);
}
links[1].onmouseover = function(){
moveElement("preview",-230,0,10);
}
links[2].onmouseover = function(){
moveElement("preview",-340,0,10);
}
}
addLoadEvent(prepareSlideshow)
if(xpos < final_x){
var dist = Math.ceil((final_x - xpos)/10);
xpos = xpos + dist;
}
if(xpos > final_x){
var dist = Math.ceil((xpos - final_x)/10);
xpos = xpos - dist;
}
if(ypos < final_y){
var dist = Math.ceil((final_y - ypos)/10);
ypos = ypos + dist;
}
if(ypos > final_y){
var dist = Math.ceil((ypos - final_y)/10);
ypos = ypos - dist;
}
这4条IF里面的语句怎么计算的啊.?我的头都大了.
我先来计算下.
第一条IF语句.0小于负110不成立.然后执行到第二条IF语句.
0大于负110条件成立.0减负110等于110,然后除以10等于11,然后赋值给dist变量.
然后0减11等于负11,然后第二次进行循环是怎么样的啊?大家帮我算算...
还有啊.在网页里观察了一次文字的走动形式.刚开始好像速度很快.快到目的地了就变慢了.慢的一小步的走
解决方案 »
- testFu({x:0,y:1,z:2})这么写是什么意思?
- 做弹出div随着滚动条移动而移动的问题,求大神解答!
- javascript SVG
- javascript 控制 div 层显示位置的问题
- 求教;如何改变地址栏或收藏夹的图标?
- 关于动态添加元素属性的问题(在线等...)
- 在求一个匹配注册表路径的正则表达式
- 请教showModalDialog的问题,多谢!
- 关于调用MediaPlayer控件,帮忙解决此问题者,百分送上!
- 怎麼才能在執行document.execCommand('SaveAs','new.htm');語句後讓頁面上的按鈕不顯示?
- javascript中prototype的用法
- 用JS读取中英文cookie值问题
..0 -110 11 -11
-11 -110 10 -21
-21 -110 9. -30
-30 -110 8. -38
-38 -110 7. -45
-45 -110 7. -52
-52 -110 6. -60
-60 -110 5. -65
-65 -110 5. -70
-70 -110 4. -74
-74 -110 4. -78
-78 -110 3. -81
-81 -110 3. -84
-84 -110 3. -87
-87 -110 2. -89
-89 -110 2. -91
-91 -110 2. -93
-93 -110 2. -95
-95 -110 2. -97
-97 -110 1. -98
-98 -110 1. -99
-99 -110 1. -100
-100 -110 1. -101
-101 -110 1. -102
-102 -110 1. -103
-103 -110 1. -104
-104 -110 1. -105
-105 -110 1. -106
-106 -110 0. -106
...不知道有没有排错,不过程序是有问题的,LZ如果也排一下的话就知道了!
//当处于目的横坐标左边的时候,向目的横坐标靠拢,变化幅度为距离除以10。
var dist = Math.ceil((目的横坐标 - 当前横坐标)/10);
//因为距离越来越近,除以10的结果越来越小,所以变化也越来越慢
当前横坐标 = 当前横坐标 + dist;
}
if(当前横坐标 > 目的横坐标){
//当处于目的横坐标右边的时候,向目的横坐标靠拢,变化幅度为距离除以10。
var dist = Math.ceil((当前横坐标 - 目的横坐标)/10);
当前横坐标 = 当前横坐标 - dist;
}
if(当前纵坐标 < 目的纵坐标){
//当处于目的纵坐标上边的时候,向目的纵坐标靠拢,变化幅度为距离除以10。
var dist = Math.ceil((目的纵坐标 - 当前纵坐标)/10);
当前纵坐标 = 当前纵坐标 + dist;
}
if(当前纵坐标 > 目的纵坐标){
//当处于目的纵坐标下边的时候,向目的纵坐标靠拢,变化幅度为距离除以10。
var dist = Math.ceil((当前纵坐标 - 目的纵坐标)/10);
当前纵坐标 = 当前纵坐标 - dist;
}这个效果,就是当离目标位置越远,就会越快速地向它靠拢,接近时越慢直到停止在目标位置。