Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать аргументы в функцию, вызываемую через setTimeout 
:(
    Опции темы
Debate
Дата 5.6.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Как через setTimeout(); вызвать функцию с параметрами ?
Код

  var defy = 100;
  var defx = 30;
  var i = 0;
  var user = "test";
        function went(y, x)
        {
              if(y != defy)
              {
                 var y2 = defy + i;
                  i++;
                  
              }
              if(x != defx)
              {
                 var x2 = defx + i;
                  i++;
                  
              }

               document.all[''+user+''].style.top=y2;
               document.all[''+user+''].style.left=x2;
               setTimeout("went(y2, x2)", 1000);
        }

Нужно чтоб параметры y2 и x2 прибавлялись по 1 единице в 1 секунду..
тоесть данная функция должна реализовывать как бы ходьбу человека пошагам или бег.

Это сообщение отредактировал(а) Debate - 5.6.2005, 00:25
PM MAIL   Вверх
Ciber SLasH
Дата 5.6.2005, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Делай так:
Код

setTimeout("went("+y2+", "+x2+")", 1000);


Это сообщение отредактировал(а) Aliance - 6.6.2005, 21:18
PM   Вверх
Sardar
Дата 5.6.2005, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ciber SLasH тогда передавать можно только значения, т.к. всё обращаеться в строку


Передать реально аргументы(обьекты и т.п.) можно так:
Код
setTimeout(function() { went(y2, x2);}, 1000);



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ciber SLasH
Дата 5.6.2005, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



2Sardar: ОК, понял ошибку. smile
PM   Вверх
Sardar
Дата 5.6.2005, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ciber SLasH у тебя ошибке не было, просто вариант.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Debate
Дата 5.6.2005, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Функцию я сделал, но теперь надо сделать, чтоб через определенное время скрипт заносил эти переменные в базу и чтоб при обновлении координаты не становились стандартными.
Добавлено @ 13:57
ах да еще вот что, если несколько раз клинкнуть по координатам , то скорость обновления функции возрастает и персонаж двигается быстрее, как это исправить ?
PM MAIL   Вверх
Sardar
Дата 5.6.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Debate не плохие у тебя запросы smile
Через "определённое время" кидаем координаты серверу(можно перезагрузкой страницы, ифрейма, XMLHttpRequest, JSInteractiveRequest...). Как, зависит от способа что ты выбрал.

А что ты подразумеваешь под обновлениями координат и "стандартные" мне не ясно...

Создай новый топик, разбей задачу не наесколько вопросов, решим.
Добавлено @ 15:37
Цитата(Debate @ 5.6.2005, 12:54)
если несколько раз клинкнуть по координатам , то скорость обновления функции возрастает

Видать запускаеться у тебя несколько тредов smile Ставь флаг, если тред уже запущен(таймер), то ничего не делай.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Debate
Дата 5.6.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Sardar
тоесть тред ?? и как определить запущен ли он или нет ??
ну стандартные координаты - координаты выводимые из базы, тоесть когда делаем передвижение, то сравниваем с этими координатами и через опеределенное обновляем их ...

PM MAIL   Вверх
Debate
Дата 5.6.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Вообщем функцию написал... обновление данных тоже, но остается одна проблема... У меня есть скрипт который вызывает функцию :
Код

top.frames['mainFrame'].view('10', '15', 'obraz', 'test');

а вот сама функция. :
Код

function view(y, x, rasa, login)
        {
             s ='<div id='+login+' style="position:absolute; top: '+y+'px; left: '+x+'px;">'+login+'<br><img src=./img/mapimg/characters/'+rasa+'.gif alt="'+login+'"></div>';
             document.all["ch"].innerHTML += s;
        }

так вот в чем проблема, при первой загрузке страницы, все выводится нормально, но если повторно обновляется скрипт вызывающий эту загрузку, то получается уже два одинаковых объекта с разными координатами, как это исправить ?
PM MAIL   Вверх
Sardar
Дата 5.6.2005, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Debate @ 5.6.2005, 15:20)
оесть тред ?? и как определить запущен ли он или нет ??

Тред - в смсыле таймер. Лучше сделай цикл не по setTimout, а setInterval. Функция возвращает дескриптор таймера, его сохрани куда нибудь. Как только нужно остановить исполнение, вызывай clearTimeout(дескриптор_таймера).


Цитата(Debate @ 5.6.2005, 17:33)
то получается уже два одинаковых объекта с разными координатами, как это исправить ?

Ты сам написал: document.all["ch"].innerHTML += s; - то есть добавляешь каждый раз новый элемент.
Вывод: вместо innerHTML+= доставай уже существующий элемент и меняй его координаты.

Если не ясно как делать, то дай линк на страницу, посмотрю, подскажу как лучше.
Я так понял ты делаешь нечто подобное интерактивной сетевой игре...?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Debate
Дата 5.6.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Я делаю Интернет Онлайн игру РПГ )

Цитата
то получается уже два одинаковых объекта с разными координатами, как это исправить ?
- это уже исправил сам )) вот линк )www.stophouse.noda.ru/game не пугайтесь за оформление )) ща регу доделаю и можете заходить

Это сообщение отредактировал(а) Debate - 5.6.2005, 21:55
PM MAIL   Вверх
Sardar
Дата 7.6.2005, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Debate чат не катит, вообще не катит, понравилось как я туда alert запостил, оказываеться ты весь фрейм(все мессаги) перезагружаешь, мой alert через каждые 5 секунд выскакивает.
Затем запостил редирект на этот форум, классно, все кто заходят прямиком сюда smile Шутка шутками, а так писать нельзя smile

Клиентская скриптовая часть тоже никакая. Пиши новые обьекты: карта, персонажь. Карта это просто контейнер персонажей, а персонаж это простейший аниматор, имеющий ссылку на свою картинку и сдвигающий координаты как это делал ты выше или (что ещё лучше) общей функцией по setInteval.
Каждый персонаж на карте имеет имя(скажем ник участника), когда сдвигаем, вызываем у карты moveCharacter(name, x, y), карта в свою очередь передаёт новые координаты обьекту персонажу. Тот уже анимируя передвигает картинку.

Это всё максимум 1 час времени, но извини, что без кода, у меня просто нет сейчас этого часа smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Debate
Дата 7.6.2005, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Цитата
Debate чат не катит, вообще не катит, понравилось как я туда alert запостил, оказываеться ты весь фрейм(все мессаги) перезагружаешь, мой alert через каждые 5 секунд выскакивает.
Затем запостил редирект на этот форум, классно, все кто заходят прямиком сюда  Шутка шутками, а так писать нельзя


ja prosto eshe ne sdelal zapret na HTML ... nu predlozi kak sdelat 4tob ne obnovljat vse messagi i freim ??

Цитата

Каждый персонаж на карте имеет имя(скажем ник участника), когда сдвигаем, вызываем у карты moveCharacter(name, x, y), карта в свою очередь передаёт новые координаты обьекту персонажу. Тот уже анимируя передвигает картинку.


voobsheto u kazdogo diva personaza svoe imja .. i kogda klikaesh po karte to vqzqvaetsja funkcija napisannaja vqshe

М
 

Пользуемся транслитом. Думаю, поставить всего лишь 1 галочку не составит труда.


Это сообщение отредактировал(а) Aliance - 7.6.2005, 22:37
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.