Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][JavaScript]Jquery vegas - problem e skryptem
Forum PHP.pl > Forum > Przedszkole
Kubzon
Hej,

mam problem ze skryptem do zmiany zdjęć w tle strony jquery vegas: http://vegas.jaysalvat.com/

w treści strony mam kod js:

Kod
    <script>
    $.vegas('slideshow', {
    delay: 3000,
    backgrounds:[
    {src:'http://www.kubzon.home.pl/new_pl/vegas/images/1.jpg',  fade: 500 },
    {src:'http://www.kubzon.home.pl/new_pl//vegas/images/2.jpg', fade: 500 },
    {src:'http://www.kubzon.home.pl/new_pl//vegas/images/3.jpg', fade: 500 }
    ]
    
    })('overlay');

</script>


Czy jest możliwość aby ustawić delay dla każdego obrazka osobno - aby niektóre ze slajdów wyświetlały się dłużej? Dzięki za pomoc
trueblue
Wyrzuć "delay" z opcji podstawowych, dodaj w każdym tle za "fade".
Zmień funkcję slideshow na poniższą w jquery.vegas.js

  1. slideshow: function(settings, keepPause) {
  2. var options = {
  3. step: step,
  4. preload: false,
  5. loading: true,
  6. backgrounds: backgrounds,
  7. walk: walk
  8. };
  9. $.extend(options, $.vegas.defaults.slideshow, settings);
  10. if (options.backgrounds != backgrounds) {
  11. if (!settings.step) {
  12. options.step = 0;
  13. }
  14. if (!settings.walk) {
  15. options.walk = function() {};
  16. }
  17. if (options.preload) {
  18. $.vegas("preload", options.backgrounds);
  19. }
  20. }
  21. backgrounds = options.backgrounds;
  22. step = options.step;
  23. walk = options.walk;
  24. clearInterval(timer);
  25.  
  26. if (!backgrounds.length) {
  27. return $.vegas;
  28. }
  29. var doSlideshow = function() {
  30.  
  31. if (step < 0) {
  32. step = backgrounds.length - 1;
  33. }
  34. if (step >= backgrounds.length || !backgrounds[step - 1]) {
  35. step = 0;
  36. }
  37. delay=backgrounds[step].delay;
  38. var settings = backgrounds[step++];
  39. settings.walk = options.walk;
  40. settings.loading = options.loading;
  41. if (typeof settings.fade == "undefined") {
  42. settings.fade = options.fade;
  43. }
  44. if (settings.fade > delay) {
  45. settings.fade = delay;
  46. }
  47. $.vegas(settings);
  48. };
  49. doSlideshow();
  50. if (!keepPause) {
  51. paused = false;
  52. $("body").trigger("vegasstart", [ $current.get(0), step - 1 ]);
  53. }
  54. if (!paused) {
  55. timer = setInterval(doSlideshow, delay);
  56. }
  57. return $.vegas;
  58. },
Kubzon
Niestety, zmieniłem skrypt jquery.vegas.js i dodałem do każdego tła np.:

Kod
{src:'http://www.kubzon.home.pl/new_pl/vegas/images/1.jpg',  fade: 500, delay: 3000 },


Jednak delay pozostaje domyślny: 5000 (dla wszystkich) sad.gif
trueblue
Wrzuć link do gotowca.
Kubzon
view-source:http://kubzon.home.pl/new_pl/ - głównie chodzi o to, aby wyświetlane hasła dopasować do zmiany tła (wiem, że kod jest ździebko chaotyczny, ale to jest robocza wersja)
trueblue
Nie usunąłeś, z opcji parametru delay.
Dodałeś delay tylko do dwóch slajdów.
Nie zmieniłeś kodu funkcji "slideshow".
Kubzon
A jakbyś mógł teraz rzucić okiem - wielkie dzięki za poświęcony czas.
trueblue
Spróbuj ten kod:
  1. slideshow: function(settings, keepPause) {
  2. var options = {
  3. step: step,
  4. preload: false,
  5. loading: true,
  6. backgrounds: backgrounds,
  7. walk: walk
  8. };
  9. $.extend(options, $.vegas.defaults.slideshow, settings);
  10. if (options.backgrounds != backgrounds) {
  11. if (!settings.step) {
  12. options.step = 0;
  13. }
  14. if (!settings.walk) {
  15. options.walk = function() {};
  16. }
  17. if (options.preload) {
  18. $.vegas("preload", options.backgrounds);
  19. }
  20. }
  21. backgrounds = options.backgrounds;
  22. step = options.step;
  23. walk = options.walk;
  24.  
  25.  
  26.  
  27. if (!backgrounds.length) {
  28. return $.vegas;
  29. }
  30. var doSlideshow = function() {
  31.  
  32. if (step < 0) {
  33. step = backgrounds.length - 1;
  34. }
  35. if (step >= backgrounds.length || !backgrounds[step - 1]) {
  36. step = 0;
  37. }
  38. delay=backgrounds[step].delay;
  39. var settings = backgrounds[step++];
  40. settings.walk = options.walk;
  41. settings.loading = options.loading;
  42. if (typeof settings.fade == "undefined") {
  43. settings.fade = options.fade;
  44. }
  45. if (settings.fade > delay) {
  46. settings.fade = delay;
  47. }
  48. $.vegas(settings);
  49. if(timer!==undefined)
  50. clearInterval(timer);
  51. if (!keepPause) {
  52. paused = false;
  53. $("body").trigger("vegasstart", [ $current.get(0), step - 1 ]);
  54. }
  55. if (!paused) {
  56. timer = setInterval(doSlideshow, delay);
  57. }
  58.  
  59. };
  60. doSlideshow();
  61.  
  62. return $.vegas;
  63. },
Kubzon
Super, działa! Jeszcze raz wielkie dzięki za pomoc!

Hej, mam jeszcze jeden problem - ma ktoś może patent na to, żeby zmienić w tym skrypcie efekt fade na clip? Dzięki za pomoc.

Problem rozwiązany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.