Как я могу запустить эффект появления и эффект затухания в scriptaculous? Мне нужно, чтобы они работали в тандаме, чтобы никакой другой эффект не мог вставить между ними - PullRequest
1 голос
/ 13 февраля 2010

Я возился с этим часами и часами и просто не могу понять это правильно. Прежде всего, мои сайты уже используют Prototytpe и Scriptaculous, и для их изменения потребуется много времени.

По сути, я после достижения эффекта слайд-шоу, похожего на плагин jQuery Cycle. Я написал большую часть этого, но не могу преодолеть это препятствие:

Мне нужно, чтобы пользователь мог нажимать кнопку управления, которая пропустит слайд, к которому когда-либо был выбран. Моя проблема заключается в том, что если работает эффект исчезновения / появления, он вызывает наложение.

Я использую очереди, и они находятся в своей области видимости. Проблема, как я вижу, заключается в том, что эффект затухания на одном слайде и эффект появления на следующем слайде являются отдельными функциями. Это означает, что если пользователь нажимает кнопку управления, чтобы перейти к другому слайду, в то время как анимация находится в промежутке между появлением и исчезновением, то следующий цикл будет помещаться в очередь между этими двумя эффектами. По умолчанию добавляется в конец существующей очереди, что должно быть хорошо. Но если внешний вид не был добавлен, когда создается новое затухание, тогда очередь портится.

Я могу сделать так, чтобы ничего не происходило, если анимация включена, но это не тот эффект, которого я хочу. Я хочу иметь возможность щелкнуть слайд, и все, что происходит, эффективно останавливается и появляется следующий слайд.

Это пример того, что я преследую: http://www.zendesk.com/

Извините, если это не имеет смысла. Трудно объяснить.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2010

Вчера вечером мне удалось решить свою проблему.

Я уже пробовал это, но не смог заставить его работать правильно. Все, что я сделал, это добавил переменную flag, которая имеет значение true, если какая-либо анимация запущена (var running = true; [или false])

Если пользователь нажимает кнопки пейджера для перемещения слайда (скажем, от слайда 1 к слайду 4), и если слайд уже находится в движении (тогда var running == true), тогда код находит все эффекты в очереди система удаляет их, а затем скрывает все слайды. Затем он просто запускает новый цикл для слайда 4 по запросу пользователя.

Неважно, насколько быстро вы нажимаете кнопки пейджера, все работает без проблем. :)

0 голосов
/ 13 февраля 2010

Если вы ничего не нашли в lib, вы можете просто использовать DOM и некоторые JS, как в этом вопросе: Как сделать так, чтобы что-то медленно отображалось на странице с использованием Javascript?

...