2

ポートフォリオサイトのために、1日1回365日間撮影した写真の「ビジュアルダイアリー」を作成したクライアントがいます。彼は私にこれらをタイムラプスエフェクトピースにまとめてほしいと思っています。Flashの使用を考えましたが、最終的にJavaScriptを選択しました。

発生する必要があるのは、これです。画像は、トランジションなどがなく、image-image-imageなどだけで非常に高速に循環します。約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>

このコードを変更して、すべての移行効果をオフにし、クリックしたときに再生を停止したり、再開したりする方法はありますか?それ以外の場合は、いくつかの異なるコードへの参照が役立ちます。

みなさん、ありがとうございました!

ジャック

4

1 に答える 1

5

IE固有のコードを使用しているようです。MooTools(私の個人的なお気に入り)、jQueryPrototype + script.aculo.usなどの専用JavaScriptライブラリでさまざまなエフェクトモジュールを使用することをお勧めします。

スライドショーを停止するには、タイムアウトをクリアするだけで済みますt

clearTimeout(t);

また、の最初のパラメータを引用しないでくださいsetTimeout。関数参照を渡します。

setTimeout(runSlideShow, slideShowSpeed);
于 2010-01-24T12:31:48.883 に答える