Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: kvak от 28 Мая 2003, 22:01:25
-
Как реализовать задержку между двумя последовательными кадрами в анимации без рекурсии? Кадр находится в слое который должен двигаться синхронно со сменой кадров.
Заранее спасибо,
kvak
-
window.SetTimeout()
или
window.SetInterval()
(зависит от задачи)
Подробнее см. в справочнике (руководстве) по JavaScript
-
Вот такой код не работает. Справочников я просмотрела уже штуки три...
function changepic()
{
document.images[0].src=walk[k].src
}
function goxy(x, y)
{
if (document.all)
{
for (layer2.style.posLeft=0; layer2.style.posLeft {
k++;
if (k>NumberOfImages) k=0;
setTimeout ("changepic()", 1000);
}
}
Заранее спасибо,
kvak
-
а шо это имелось ввиду? :)
человеческим языком пожалуста..
потому как там бредд написан ;)
Цикла такого низя делать
function changepic(k)
{
document.images[0].src=walk[k].src
k++;
if (k>NumberOfImages) k=0;
setTimeout ("changepic("+k+")", 1000);
}
-
В том случае как вы написали, картинка будет стоять на месте. А нужно, чтобы она еще и перемещалась до заданной координаты. Для этого и был нужен цикл. Что именно в моем коде - бред?
Заранее спасибо,
kvak
-
Тогда в эту функцию надо просто дописать
layer2.style.posLeft+=10
а setTimeout ("changepic("+k+")", 1000);
заменить на
if(layer2.style.posLeft
А бредом в предложенном Вами примере является наличие цикла :)
Это наличи говорит об опыте программирования под DOS и отсутствие опыта программирования под Windows (событийная модель программирования)
Или Вы все еще не видите где именно в моем примере подразумевается аналог цикла ? :)
Иначе - низя - не работает. Цикл слишком быстро завершается.
-
Спасибо вам большое. При реализации движения по прямой по рекурсии, все работает. Но если я пишу отдельно движение по вертикали, отдельно - движение по горизонтали, а затем вызываю их последовательно картинка начинает двигаться по диагонали! Получается, что таймер работает вообще независимо от фигурных скобок? Как можно это обойти?
Опыта программирования под Windows у меня и правда, никакого, писала только под борландсями 8((
Заранее спасибо,
kvak
-
kvak:
Но если я пишу отдельно движение по вертикали, отдельно - движение по горизонтали, а затем вызываю их последовательно картинка начинает двигаться по диагонали! Получается, что таймер работает вообще независимо от фигурных скобок? Как можно это обойти?
Даже когда ты вызываешь их последовательно, функции отрабатывают каждая по разу и оставляют после себя таймеры следующего вызова. Поэтому если тебе нужно знать, когда закончилось движение, вызывай движение по горизонтали из условия окончания движения по вертикали, или в одной функции следи за флажками, которые выставляются в другой. Все зависит от того, чего именно ты хочешь добиться.
-
[off]А какой броузер? Интересно ведь ;)[/off]
-
Вот теперь все заработало! Всем спасибо!
Броузер - MS IE...
-
а версия?
-
5.0
-
Пора 6-ю ставить... Она лучше и современнее...
К тому же IE6 & Netscape 6 начали (наконец-то!) поддерживать стандарты *ML и используют... Ну и еще много новинок...
...это не реклама :)
-
[OFF]А ведь все равно надо, чтобы подо всеми работало :)[/OFF]
-
Под Несткейпом легче написать, там нет всех этих заморочек со слоями...
Так как это курсовая, то работать оно должно в первую очередь под броузером преподавателя... 8)
kvak