1

だから私の質問はかなり簡単です。合計 10 枚の写真を含む「フェード」トランジションを使用してスライドショーを実行していて、典型的な次/前のボタンもあるとします。スライドショーは画像 1 から画像 10 まで自動的に循環します。ユーザーがいつでも再生順序を逆にできるようにするにはどうすればよいですか? たとえば、画像 6 を見ているときに、ユーザーは「前へ」(または必要に応じて新しいボタン) をクリックし、画像 5 に戻った後、スライドショーは画像 4、3、2... と続きます。

これは可能ですか?Cycle の 'rev' オプションについて読んで試してみましたが、うまくいきませんでした。

アイデアをありがとう!

4

1 に答える 1

2

ソースを見ると、revオプションはアニメーション専用で、フェードには適用されないようです。正確なコメントは次のとおりです。

// causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)

あなたは後方を探しているかもしれません:

// true to start slideshow at last slide and move backwards through the stack

順序を逆にしたい場合は true に設定してみてください。

編集:おそらくこれを行うためのより良い方法があります。いずれにせよ、ここに 1 つの方法があります。まず、何らかの関数を呼び出すクリック ハンドラーをボタンに追加します。

function toggleDirection(){
    // replace your_slide_div with whatever your div is named
    $('.your_slide_div').cycle("toggleDirection");
}

次に、サイクル プラグイン JS ファイルで、handleArguments(cont, options, arg2)関数を探します。switch ステートメントで、ケースを追加します。

case "toggleDirection":
        $(cont).data('cycle.opts').backwards = $(cont).data('cycle.opts').backwards ? false : true;
        if($(cont).data('cycle.opts').backwards)
            $(cont).data('cycle.opts').nextSlide = 
                $(cont).data('cycle.opts').nextSlide - 2 < 0 ? 
                $(cont).children().length - 1 : $(cont).data('cycle.opts').nextSlide - 2;
        else
            $(cont).data('cycle.opts').nextSlide = 
                $(cont).data('cycle.opts').nextSlide + 2 >= $(cont).children().length ? 
                0 : $(cont).data('cycle.opts').nextSlide + 2;
        return false;

編集:このケースでは、すべての画像をスライドしていることを前提としています。slideExprオプションを使用している場合、これにより問題が発生します。

これは方向を切り替えるため、ボタンを 2 回クリックすると通常の状態に戻ります。逆にするだけの場合は、大文字と小文字を次のように変更します。

(cont).data('cycle.opts').backwards = true;

編集:うまくいけば最後のもの。プラグイン JS ファイルで、次を検索します。

opts.nextSlide < opts.currSlide

その特定の選択を次のものに置き換えます。

opts.currSlide == els.length - 1
于 2011-02-21T19:54:34.133 に答える