【问题标题】:Javascript timelapse-effect: displaying 30 images/second (read for more detail)Javascript 延时效果:显示 30 张图像/秒(阅读更多详细信息)
【发布时间】:2011-01-08 18:41:17
【问题描述】:

我有一位客户为他的投资组合网站制作了一张“视觉日记”,他每天拍摄一次,持续 365 天。他想让我把这些组合成一个延时效果片段。我曾想过使用 Flash,但最终选择了 JavaScript。

需要发生的是:图像循环非常快,没有过渡或任何东西,只有图像-图像-图像等。大约 30/fps 或类似的速度。当您单击闪烁的图像时,它会停在您选择的图像上,以便用户查看。当您再次单击时,幻灯片再次开始播放。

我的问题是我是一个 PHP/XHTML/CSS 家伙,对 JavaScript 并没有真正的了解。我可以很高兴地将它集成到任何页面中,但它只是对困扰我的 JavaScript 进行编码。

在他的主页上,我有这段代码用于显示基本的幻灯片 - 带有过渡效果等。它在 HTML 中,但你可以理解我确定的代码:

<!-- Code for slideshow -->
<!-- Found on http://www.webdeveloper.com/forum/showthread.php?t=81441 -->

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
// Set slideShowSpeed (milliseconds)
var slideShowSpeed = 3000;
// Duration of crossfade (seconds)
var crossFadeDuration = 3;
// Specify the image files
var Pic = new Array();
// to add more images, just continue
// the pattern, adding to the array below

Pic[0] = '1.jpg'
Pic[1] = '2.jpg'
Pic[2] = '3.jpg'
Pic[3] = '4.jpg'
Pic[4] = '5.jpg'
Pic[5] = '6.jpg'
Pic[6] = '7.jpg'
Pic[7] = '8.jpg'
Pic[8] = '9.jpg'
Pic[9] = '10.jpg'
Pic[10] = '11.jpg'
Pic[11] = '12.jpg'
Pic[12] = '13.jpg'
Pic[13] = '14.jpg'
Pic[14] = '15.jpg'
Pic[15] = '16.jpg'
Pic[16] = '17.jpg'
Pic[17] = '18.jpg'
Pic[18] = '19.jpg'
Pic[19] = '20.jpg'

// do not edit anything below this line
var t;
var j = 0;
var p = Pic.length;
var preLoad = new Array();
for (i = 0; i < p; i++) {
preLoad[i] = new Image();
preLoad[i].src = Pic[i];
}
function runSlideShow() {
if (document.all) {
document.images.SlideShow.style.filter="blendTrans(duration=2)";
document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)";
document.images.SlideShow.filters.blendTrans.Apply();
}
document.images.SlideShow.src = preLoad[j].src;
if (document.all) {
document.images.SlideShow.filters.blendTrans.Play();
}
j = j + 1;
if (j > (p - 1)) j = 0;
t = setTimeout('runSlideShow()', slideShowSpeed);
}
//  End -->
</script>

有没有什么办法可以修改这段代码来关闭所有的过渡效果,并让它在你点击它/再次启动时停止播放?否则,参考一些不同的代码会很有帮助。

谢谢大家!

杰克

【问题讨论】:

    标签: javascript image slideshow timelapse


    【解决方案1】:

    您似乎正在使用特定于 IE 的代码。我建议使用专用 JavaScript 库中的各种效果模块,例如 MooTools(我个人最喜欢的)、jQueryPrototype + script.aculo.us

    要停止幻灯片,您应该能够简单地清除超时t

    clearTimeout(t);
    

    另外,你不应该引用setTimeout 的第一个参数。传递给它一个函数引用:

    setTimeout(runSlideShow, slideShowSpeed);
    

    【讨论】:

    • 感谢 Steve - 我发现它在 Safari 和 Firefox 中确实有效。还要说,我已经设法让它播放得非常快(这显然只是改变了变量值),我现在需要的是让它在被点击时停止播放/开始播放。你对我如何做到这一点有什么建议吗?理想情况下,如果我仍然可以使用此代码而不是实现新的东西,因为我今天要与客户会面,这将是有帮助的,但是,如果需要,我会研究其他东西。另外,仅供参考 - 相关代码的哪个方面是 IE 特定的?
    • 谢谢史蒂夫!这很有帮助,我会记住这一点。一直在研究 jQuery 画廊——客户网站的其余部分使用我设法实现的 jQuery。所以我会努力坚持下去。感谢您的提示。
    • 感谢史蒂夫,我现在可以正常使用效果,并且在所有浏览器中都能完美运行。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多