22.01.2010, 16:39
|
|
Труъ кодер
|
|
Регистрация: 20.01.2010
Сообщений: 194
|
|
Я еще толком не читал про события но где-то боком слышал о onload. Который срабатывает когда что-то полностью загружено(выполнено).
|
|
22.01.2010, 16:48
|
|
Новичок на форуме
|
|
Регистрация: 21.01.2010
Сообщений: 8
|
|
Для #6: Ну если я точно не знаю сколько времени должно пройти!
В этой функции да можно вычислить через которое время она завершиться но для других подобных НЕТ!
function anim(ob, x, dx, t,callback){
if(t<0) callback();
document.getElementById(ob).style['top']=x+dx;
setTimeout(function(){anim(ob, x, dx, t-1)}, 10);}
Если б не функция setTimeout то можно било бы сделать
так:
function anim(ob, x, dx, t,callback){
if(t<0) callback();
document.getElementById(ob).style['top']=x+dx;
return anim(ob, x, dx, t-1)}
Но при таком раскладе элемент прорисован сначала и в конце своего движения!!!!
Есть ли такая функция в js аналог sleep() в php?
sleep() в PHP делает паузу при выполнении скрипта...
Если есть то она поможет в этом вопросе! Жду Ваших ответом!!!!
|
|
22.01.2010, 16:51
|
|
Новичок на форуме
|
|
Регистрация: 21.01.2010
Сообщений: 8
|
|
При чем тут onload! Я же не загружаю ничего....
|
|
22.01.2010, 16:55
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Вам Gvozd уже написал. Поправить немного надо было, всего-то:
function anim(ob, x, dx, t,callback) {
if(t<0) return callback();
document.getElementById(ob).style['top']=x+dx;
setTimeout(function(){anim(ob, x, dx, t-1, callback)}, 10);
}
anim('div',1,1,25,function(){alert('алерт')});
Niar,
так если боком слышали, зачем советуете? Тем более что onload тут как не пришей ... рукав.
|
|
22.01.2010, 16:58
|
|
Труъ кодер
|
|
Регистрация: 20.01.2010
Сообщений: 194
|
|
Виноват. Надо было сначала уточнить точное действие события.
Последний раз редактировалось Niar, 22.01.2010 в 17:04.
|
|
22.01.2010, 17:18
|
|
Новичок на форуме
|
|
Регистрация: 21.01.2010
Сообщений: 8
|
|
Да я понял про использования callback! Я знал етод метод но не то я хотел...
например нужно мне переместить див с верха экрана в низ, выполнить некоторою функцию, потом переместить его назад и выполнить новою функцию...
если использовать посоветованный вами метод код будет иметь вид:
anim(ob, 150, 2, 15, function(){alert('Привет!'); anim(ob2, 100, -2, 13, function(){alert(2); Ище какаято функцыя...; anim(ob, 150, 2, 7)})})
А мне б хотелось что би не все так запутано било и это же имело такой вид:
anim(ob, 150, 2, 15);
alert('Привет!');
anim(ob2, 100, -2, 13);
alert(2);
Еще какая то функция...;
anim(ob, 150, 2, 7);
Так мне кажется намного проще!!!
Скажет кто то по поводу функцию аналог sleep() в php?
|
|
22.01.2010, 17:20
|
|
Труъ кодер
|
|
Регистрация: 20.01.2010
Сообщений: 194
|
|
Вот аналоги php функций в JS http://javascript.ru/php
Про sleep ни чего нету
|
|
22.01.2010, 17:23
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Реализовавать самому. Можно почитать исходники jQuery, к примеру, там есть query.
|
|
22.01.2010, 17:24
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от sms9
|
Так мне кажется намного проще!!!
|
Но так нельзя.
Сообщение от sms9
|
нужно мне переместить див с верха экрана в низ, выполнить некоторою функцию, потом переместить его назад и выполнить новою функцию...
|
Поменьше анонимных функций, если не нравится вложенность. И не надо вытягивать код в одну строку, не так страшно будет.
function downUp(downCallback, upCallback) {
anim(bla, bla, function() {
downCallback();
anim(bla, bla, function() {
upCallback();
})
});
}
downUp(function() {
// ...
}, function() {
// ...
});
sleep в JavaScript нет и не надо. Хотите писать на JS -- привыкайте к асинхронному коду.
|
|
23.01.2010, 15:27
|
|
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
Niar,
мне кажется, sms9 может быть вполне украинцем
sms9,
Если Вам нужно, чтобы код выполнился сразу же после завершения потока, используйте setTimeout:
function testInner(){
alert('Тут мы стартовали');
setTimeout(function(){alert('Отложенный запуск')}, 0);
alert('Тут мы закончили');
}
function testOuter(){
alert('Запускаем внутреннюю функцию');
testInner();
alert('Вышли из внутренней функции');
}
testOuter();
|
|
|
|