【发布时间】:2014-09-26 15:58:24
【问题描述】:
我想在初始延迟后以两个不同的时间间隔在两个 png 图像之间自动切换:
- 图像 A 显示 2 秒(初始延迟)
- 图像 B 显示 0.3 秒
- 图像 A 显示 6 秒
- 从第 2 步开始重复
我发现问题 Javascript - Switching Between Two Images 和 letiagoalves’ 教学代码,展示了如何在两个图像之间交替显示两个图像相同的时间量:
<img id="Change_Image" src="http://placehold.it/200x200" alt="Letter A">
function change_image() {
var url = document.getElementById('Change_Image').src;
if (url == 'http://placehold.it/200x200') {
document.getElementById('Change_Image').src = 'http://placehold.it/100x100';
} else {
document.getElementById('Change_Image').src = 'http://placehold.it/200x200';
}
}
setInterval(change_image, 2000);
...并尝试通过使用setInterval() 和setTimeout 的各种组合对其进行修改,以在不同时间显示图像,但到目前为止无济于事:
-
使用一个
setTimeout()和两个setInterval():-
这里的想法是首先显示图像 A,
start_animation()使用setTimeout()等待 2 秒,然后再调用change_image()显示图像 B。与此同时,change_back()是每 0.3 秒调用一次,因此图像 B 的显示时间永远不会超过 0.3 秒,change_image()每 6 秒调用一次,因此图像 B 每 6 秒显示一次。 -
结果 – 图像切换,但间隔有点不确定: 有时图像 B 显示的时间大约是预期时间,有时它会非常短暂地闪烁过去。我想这是因为
change_image()和change_back()同时执行时的干扰模式。
-
这里的想法是首先显示图像 A,
代码:
function start_animation() {
change_image();
}
function change_image() {
document.getElementById('Change_Image').src = 'http://placehold.it/100x100';
}
function change_back() {
document.getElementById('Change_Image').src ='http://placehold.it/200x200';
}
var initialTimout = 2000; //Time in milliseconds
var longInterval = 6000; //Time in milliseconds
var shortInterval = 300; //Time in milliseconds
setTimeout(start_animation, initialTimout);
setInterval(change_image, longInterval);
setInterval(change_back, shortInterval);
-
使用一个
setInterval()并在我们进行时更改间隔:-
这里的想法是
change_image()负责所有图像的变化,并根据显示的图像,改变setInterval的间隔。 -
结果 - 此解决方案同时显示两个图像(初始超时时间),这不是目标。我研究了如何更改函数外部的变量,但肯定是弄错了,或者一旦调用了
setInterval(),JS 就不允许更改间隔。
-
这里的想法是
代码:
interval = 2000;
function change_image() {
var url = document.getElementById('Change_Image').src;
if (url == 'http://placehold.it/200x200') {
document.getElementById('Change_Image').src = 'http://placehold.it/100x100';
window.interval = 300;
} else {
document.getElementById('Change_Image').src = 'http://placehold.it/200x200';
window.interval = 6000;
}
}
setInterval(change_image, interval);
-
使用连续的
setTimeout():-
这里的想法是让
change_image()和change_back()在最初的2 秒超时后一遍又一遍地互相调用,并使用setTimeout()来确保调用被延迟以及它们之间的时间是对的。 - 结果 - 似乎根本不起作用:只显示图像 A。
-
这里的想法是让
代码:
function start_animation() {
change_image();
}
function change_image() {
document.getElementById('Change_Image').src = 'http://placehold.it/100x100';
change_back();
}
function change_back() {
document.getElementById('Change_Image').src ='http://placehold.it/200x200';
}
setTimeout(start_animation, 2000);
setTimeout(change_back(), 300);
setTimeout(change_image(),6000);
有没有用 Javascript 解决这个问题的好方法?
怎么做?
【问题讨论】:
标签: javascript image animation