2011-01-18 12 views
1

ページには、4つのdivがあり、スライドショーが作成されています。 divA-divDと呼ぼう。すべてのdivには2セットの画像があります。jquery cycle sequential

私はこれらのdivをスライドショーにするためにjQueryサイクルを使用します。キャッチは、私は連続スライドショーをしたいです。私はそれをはっきりと説明することができないのか分かりませんが、このようになります。

タイムアウト= 1000 +タイムアウト(1秒)= 4000(4秒) DIVA DIVB = 1333 +タイムアウト DIVC = 1666 +タイムアウト divD = 2000 +タイムアウト(2秒)

今私の現在そのためのコードはDIVCとdivD持つように

var timeout = 4000; 
$('.divA').cycle({ 
    fx:  'fade', 
    speed: 2000, 
    timeoutFn: 1000+timeout 
}); 
$('.divB').cycle({ 
    fx:  'fade', 
    speed: 2000, 
    timeoutFn: 1333+timeout 
}); 

ですが、結果はこの

ようになります

DIVA = 1000 + 4000 = 5000
DIVB = 1333 + 4000 = 5333
DIVC = 1666 + 4000 = 5666
divD = 2000 + 4000 = 6000

divDが最終的に追いつくだろう行うことをDIVA長すぎる放置しておく理由:

歌姫= 5,10,15,20,25,30
divD = 6,12,18,24,30

divDの5番目のスライドは、DIVAの第六と同時になります滑り台。

divDのサイクル後にサイクルが何とか一時停止するようにします。まだ
9-10th秒を一時停止:その後、さらに4秒間
5-8th秒を一時停止divD - フェードDIVA:

1-4th秒::ショーの画像
4-5th秒だから、このように書きます別のサイクル、さらに4秒間停止する
10-13秒:一時停止
など。

私は式をしたが、それを

タイムアウト*(インデックス)+(1000年*(インデックス-1))を実施する際の難しさを見つけました。

DIVA =タイムアウト*(インデックス)+(1000 *(インデックス1))
DIVB =タイムアウト*(インデックス)+(1000 *(インデックス1)+ 333)
DIVC =タイムアウト*(インデックス)+(1,000 *(インデックス1)+ 666)
divD =タイムアウト*(インデックス)+(1,000 *(インデックス1)+ 1000)

インデックス=スライドのループ(1,2 、3,4,5、.....* 1 + 1000)

DIVA = 4000 * 1 + 1000年*(0)= 4000×2 4000 + 1000年*を行います

(1)= 9000など
DIVB = 4000 *( (0)+ 333 = 4333,4000 * 2 + 1000 *(1)+333 = 9333など
divC = 4000 * 1 + 1000 *(0)+666 = 4666,4000 * 2 + 1000 *(1)+ 666 = 9666など
divD = 4000 * 1 + 1000 *(0)+ 1000 = 5000、4000 * 2 + 1000 *(1)+ 1000 = 10000など

質問は、どうすればよいですかそれはjqueryサイクルですか? (私は唯一のdivごとに2つのイメージを持っているので)

function calculateTimeout(currElement, nextElement, opts, isForward) { 
    var index = opts.currSlide; 

    return timeout * (index) + (1000* (index-1)); 
} 

をしかし、インデックスが0-> 1 - > 0-> 1 - >などとどまる:私はtimeoutFnを使用してみましたし、次のようにコールバック機能を備えました

あまりにも長すぎたり、十分ではないと申し訳ありません。事前にお返事いただきありがとうございました

+0

:)何jQueryを使ってサイクル/アニメーションの連鎖について - 最初のアニメーションが終了した後、それがexcecutedされます。この方法は?おそらくjQueryの遅延と組み合わせてですか? jsfiddleデモは非常に便利です。 – gabel

+0

http://jsfiddle.net/uygey/2/ なぜ私のローカルホストで動作しているように見えるのかわかりません。 – Henson

+0

大丈夫、これは動作します:http://jsfiddle.net/uygey/3 / – Henson

答えて

0

解決策を見つけました。

http://jsfiddle.net/uygey/4/

またはあなたが読書のように感じる場合は、以下のお読みください。それはややハック/チートだが、働くものは何でも、私は推測

var index = -1; 

$('.divA,.divB,.divC,.divD').cycle({ 
fx:  'fade', 
speed: 2000, 
timeoutFn: calculateTimeout 
}); 

function calculateTimeout(currElement, nextElement, opts, isForward) { 
var class = $(currElement).parent().attr('class'); 
var timeout = 4000; 
var wait; 
if(class=="divA"){ 
wait = 0; 
}else if(class=="divB"){ 
wait = 333;  
}else if(class=="divC"){ 
wait = 666; 
}else if(class=="divD"){ 
wait = 1000; 
} 

if(class=="divA"){ 
index++; 
}  

return timeout * (index) + ((1000* (index-1)) + wait); 

} 
関連する問題