Я бы хотел выделить пункт меню на 5 пикселей при наведении курсора и вернуть его в исходное положение с помощью Scriptaculous.Я использую обратный вызов afterFinish, чтобы убедиться, что эффект «Отталкивающее движение» завершен до того, как запустится эффект «Откатное движение».
Проблема заключается в том, что элемент не возвращается в исходное положение, если выбыстрое наведение мышки и наведение мышью более одного раза.Чем больше вы наводите мышку, тем больше она выключается.Я думал, что это то, что должен был предотвратить обратный вызов afterFinish.Кажется, что он корректно работает с эффектом Morph, и он должен работать со всеми эффектами Scriptaculous, как указано ниже:
Javascript - Scriptaculous - функция обратного вызова эффекта
IЯ пытался использовать очереди эффектов, один и тот же результат и провел несколько часов, просматривая различные форумы, чтобы помочь мне понять это.
Вот пример Morph, который работает правильно:
<SCRIPT>
function morphMe(obj) {
new Effect.Morph($(obj), {
style: {
height: '200px',
width: '200px'},
afterFinish: function(){ new Effect.Morph($(obj), {
style: {
height: '20px',
width: '200px'}});
}
})
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="morphme(this);">Morph Me</div>
Вот движениепример, который не работает должным образом при быстром наведении мышиВозможно, мне нужно использовать setTimeout, но я не понимаю, почему это необходимо.
<SCRIPT>
function OnFinish(obj){
new Effect.Move(obj.element.id, {x: -5, y: 0, duration: .4});
}
function bumpOut(myObject){
new Effect.Move(myObject,
{ x: 5,
y: 0,
duration: 0.4,
afterFinish: OnFinish,
});
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="bumpOut(this);">Bump me right and then back</div>
Любая помощь, может быть, даже мод с использованием setTimeout или указатель на твердый скрипт, который уже делает это, очень ценится.
Спасибо,
motorhobo