素晴らしいサイクルプラグインでスライドショーを実行しています。ショーのボタンをクリックすると、ページに非表示のレイヤーが表示され、「一時停止」コマンドを送信してサイクルします。私は2つの問題を抱えています:
一時停止コマンドを受信すると、cycleはすぐにシーケンスの最初のスライドに戻り(なぜ??)、コールバックの前後にヒットしません。
レイヤーを閉じた後、「resume」コマンドを送信してサイクルします。スライドショーは再開されますが(一時停止が残った最初のスライドから)、スライドショーが進行しても、サイクルはコールバックの前後をまったく呼び出しません。
だから私の質問は、スライドショーを適切に一時停止/再開して、これらの奇妙な動作が発生しないようにするにはどうすればよいかということだと思います。(そして、完全に明確にして混乱を避けるために、これは「ホバーで一時停止」機能に関するものではありません。これは実際にはうまく機能しています。:-)
これが私のcycle()initと私のコールバック関数です。(nextSlideを手動で追跡するのはなぜですか?現在のスライドの組み込み値は、コールバックの前後で適切に更新されないためです。)
$(document).ready(function() {
$('#slideshow').cycle({
fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
speed: 1000, // speed of the transition (any valid fx speed value)
pause: 1, // true to enable "pause on hover"
delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
slideExpr: 'img', // expression for selecting slides (if something other than all children is required)
before: moveArrow, // function to call when moving to next slide
after: upd, // function to call when moving to next slide
fastOnEvent: 'fast',
});
});
var nextSlide = 0;
function upd(a, b, c) {
nextSlide = nextSlide + 1; // track which slide we're on
c = $('#slideshow img').length;
if(nextSlide > (c - 1)) nextSlide = 0; // wrap back to 1st
}
// move indicator showing which slide we're on
function moveArrow(a, b, c) {
$('#slide-indicator').attr('class', 'c'+nextSlide);
$(".clickmap").hide(); // hide other clickmaps
$(".clickmap.c"+nextSlide).show(); // show map for this slide
return true;
}
これについての考えをありがとう-
最高、エリック