JavaScript Timelapse-Effect: عرض 30 صورة/ثانية (اقرأ لمزيد من التفاصيل)

StackOverflow https://stackoverflow.com/questions/2126994

سؤال

لديّ عميل قام بعمل "مذكرات بصرية" من الصور الفوتوغرافية التي التقطها مرة واحدة يوميًا لمدة 365 يومًا ، لموقع محفظته. يريدني أن أضعها معًا في قطعة تأثير الفاصل الزمني. فكرت في استخدام الفلاش ولكن في النهاية اخترت JavaScript.

ما يجب أن يحدث هو: دورة الصور بسرعة كبيرة حقًا دون أي تحولات أو أي شيء ، فقط صورة صورة الصورة وما إلى ذلك. حوالي 30 إطارًا أو شيء من هذا القبيل. عند النقر فوق الصور الوامضة ، يتوقف على الصورة التي حددتها ، حتى يتمكن المستخدم من إلقاء نظرة. عند النقر مرة أخرى ، يبدأ عرض الشرائح اللعب مرة أخرى.

مشكلتي هي أنني bloke php/xhtml/css الذي لم يكن حقًا هو الأكثر ضبابية حول JavaScript. يمكنني دمجها بسعادة في أي صفحة ، لكنها مجرد ترميز JavaScript التي تزعجني.

على صفحته الرئيسية ، لدي هذا الرمز يستخدم لعرض عرض شرائح أساسي - مع تأثيرات انتقالية وما إلى ذلك.

<!-- 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>

هل هناك أي طريقة لتعديل هذا الرمز لإيقاف جميع التأثيرات الانتقالية ، وجعله يتوقف عن اللعب عند النقر فوقه/ابدأه مرة أخرى؟ خلاف ذلك ، فإن الإشارة إلى بعض التعليمات البرمجية المختلفة ستكون مفيدة.

شكرا لكم جميعا!

جاك

هل كانت مفيدة؟

المحلول

يبدو أنك تستخدم رمز IE الخاص. أوصي باستخدام وحدات التأثيرات المختلفة في مكتبة JavaScript مخصصة مثل موتول (المفضل لدي) ، jQuery, ، أو النموذج المبدئي + script.aculo.us.

لإيقاف عرض الشرائح ، يجب أن تكون قادرًا على إزالة المهلة ببساطة t:

clearTimeout(t);

أيضا ، يجب ألا تقتبس المعلمة الأولى من setTimeout. تمريرها مرجع الوظيفة:

setTimeout(runSlideShow, slideShowSpeed);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top