Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Таймер в объекте (JavaScript) / 12 сообщений из 12, страница 1 из 1
02.07.2008, 22:49
    #35407636
ZeroHold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
Доброе ...
Задача: Пытаюсь создать анимацию в объекте, но так чтобы таймер работал у каждого объекта независимо. Ну типа вызвал объект.старт_анимации и забыл, но возникала проблема.

Вопрос как сделать так чтобы на JavaScript в объекте вызывался таймер
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function sd_text_effect()
{ ...
  this.count_steps= 20 ;
  this.div_source_name='';
  ... и т.д.
  this.f_start=function()
  {... 
    this.f_anim();// вызов производится корректно
    return;
  };
  // непосредственно сама анимация
  this.f_anim=function()
  { ...
    setTimeout("this.f_anim()", 40 );<-- проблема (this.f_anim is not a function)
    return;
  }
}
var obj=new sd_text_effect();// создаем экземпляр объекта, эффекта
...
obj.f_start();// стартануть анимацию объекта

Вот вопрос как бы эту проблему исправить чтобы сделать так что бы встроить анимаюцию или что либо подобное в сам объект.
спасибо.
...
Рейтинг: 0 / 0
03.07.2008, 00:41
    #35407717
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
setTimeout в таком контексте скорее всего повесит клиента рекурсией. Нужен setInterval + замыкания для передачи в него параметров. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function sd_text_effect()
{ 
  var oThis = this;
  this.f_start=function()
  {
    setInterval(function(oAnim){return function(){oAnim.f_anim();}}(oThis), 40 );
  };
  this.f_anim=function()
  {
    //бла-бла-бла...
  };
}
...
Рейтинг: 0 / 0
03.07.2008, 00:51
    #35407724
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
хотя нет, наврала, не вешает. Так что делаем проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function sd_text_effect(id){
  var oThis = this;
  this.f_start=function()
  {
	oThis.f_anim();
  };
  this.f_anim=function()
  {
	//.....
	setTimeout(oThis.f_anim,  40 );
  };
}
...
Рейтинг: 0 / 0
03.07.2008, 13:12
    #35408674
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
illionхотя нет, наврал а
illion, ты тетке? o_O
...
Рейтинг: 0 / 0
03.07.2008, 13:17
    #35408691
ZeroHold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
Первый пример робит отлично,
но второй не хочет.
Честно говоря логику данного действа не понял. Объясните?
Да понимаю работает, но блин не люблю когда не понимаю сути
...
Рейтинг: 0 / 0
03.07.2008, 16:08
    #35409406
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
про суть того, что в первом примере, можно почитать в первую очередь здесь + гугл (javascript замыкания).
Но в данном случае это не понадобится.
Почему не работает второй пример (какая ошибка возникает)? f_anim находится в пределах области видимости переменной oThis, и проблем с объектом быть не должно. Тестовый рабочий (проверено) пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<div id='q' style="width:100px; float:left;"></div>
<div id='w' style="width:100px; float:left;"></div>
<script>
function sd_text_effect(id){
  var oThis = this;
  this.id = id;
  this.f_start=function()
  {
	oThis.f_anim();
  };
  this.f_anim=function()
  {
	document.getElementById(oThis.id).innerHTML += 'qwert<br>';
	setTimeout(oThis.f_anim,  40 );
  };
}
var obj=new sd_text_effect('q');
obj.f_start();
var obj2=new sd_text_effect('w');
obj2.f_start();
</script>
...
Рейтинг: 0 / 0
03.07.2008, 16:10
    #35409410
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
а еще интересно - попробовала setInterval вместо setTimeout использовать (все-таки он по логике больше подходит). В опере и ие внешне никаких отличий, а вот фф стал выдавать строки "qwert" пачками.
...
Рейтинг: 0 / 0
03.07.2008, 18:51
    #35409958
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
IE вызывает функии по таймеру. Если интерпретатор занят - ничего не вызывается и вызов пропускается..
FF стаит по таймеру вызов в очередь. после освобождения интерпретатора функции вызываются подряд.
...
Рейтинг: 0 / 0
03.07.2008, 18:52
    #35409964
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
ZeroHoldПервый пример робит отлично,
но второй не хочет.
Честно говоря логику данного действа не понял. Объясните?
Да понимаю работает, но блин не люблю когда не понимаю сути

Во втором примере Вам ф функии не следует применять this. Вместо него только oThis
...
Рейтинг: 0 / 0
03.07.2008, 21:49
    #35410218
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
зы illionхотя нет, наврал а
illion, ты тетке? o_O
гхм, да, так вот, я все о своем, о спермотоксикозе :)
раз illion судя по всему девушко, то выскажу от неожиданности уважуху, ибо в своей практике я мало встречал людей, понимающих в html/javascript выше уровня задаваемых тут вопросов, а девушек не встречал вообще :)
...
Рейтинг: 0 / 0
03.07.2008, 23:06
    #35410312
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
зыгхм, да, так вот, я все о своем, о спермотоксикозе :)
Вроде, как - ты не первый раз на хорум зашёл. Она - здесь лучшая. А ты чё - посты не читаешь что-ли?
...
Рейтинг: 0 / 0
03.07.2008, 23:57
    #35410378
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймер в объекте (JavaScript)
а я просто не все посты читаю :) времени нет :(
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Таймер в объекте (JavaScript) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]