Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как добавить слушателя? (http://www.flasher.ru/forum/showthread.php?t=173324)

EndoCrinologist 29.12.2011 18:26

Как добавить слушателя?
 
Как нужно поставить слушателя на функцию, чтобы она выполнилась ТОЛЬКО ТОГДА, когда произошло изменение значение какой-либо переменной, а не всё время проверяла её весь промежуток времени?

Tails 29.12.2011 18:33

Так вы же эту переменную сами меняете, или в этом замешаны патустаронние силы?

EndoCrinologist 29.12.2011 18:42

я через ComboBox раздела Components её меняю. Но дело в том, что обычный мой способ - это функция, на которой висит setInterval с задержкой 1 секунда, которая проверяет, а не изменилась ли эта переменная? Поэтому мне и надо как-то опознать, что она изменилась ИМЕННО В ЭТОТ МОМЕНТ, чтобы не перепроверять её миллион раз. Вот.

crazyone 29.12.2011 18:45

А у ComboBox кто-то события отменил?

EndoCrinologist 29.12.2011 18:47

ААА! change?????
а подскажите примерно?

crazyone 29.12.2011 18:53

Цитата:

Сообщение от EndoCrinologist (Сообщение 1054279)
ААА! change?????

Ну наверное.

EndoCrinologist 29.12.2011 18:55

эмм... а если у меня Flash 8?

mooncar 29.12.2011 18:59

Правильная ссылка для ComboBox, AS2.

Смотри список событий "Event summary for the ComboBox class". Выбираете нужное и вызываете нужную функцию в обработчике события.

EndoCrinologist 29.12.2011 19:10

Взяв код за основу, мой флеш завис... Что тут не так?

Код AS1/AS2:

var listenerObject:Object = new Object();
listenerObject.change = function(eventObject:Object) {
if (_root.authentific.setsts.value == 1){
checkOnline("on");
} else {
checkOnline("off");
}
};
_root.authentific.setsts.addEventListener("change", listenerObject);


mooncar 29.12.2011 21:51

Каша, а не код. Скажи своему флешу, пусть оформляет получше :)

Этот кусок, часом, не засунут у тебя в onEnterFrame или под setInterval ?

EndoCrinologist 30.12.2011 10:34

Нет. Он вставлен в Мувиклип "панели", отвечающей за подключения пользователя к игре, а вот код _root.authentific.setsts.value - это как раз относится к ComboBox'у, отвечающий за переключение статуса Он/Офф лайн. Сейчас я вообще расскажу, что у меня, да как...

Я создаю мультиплеерскую игру и у меня возникла проблема по поводу добавления пользователя в онлайн-списки. Ведь если пользователь заходит в игру, то он опять добавляется и добавляется. И теперь фактически онлайн - 1 юзер, на цифрах - 100500 юзеров.. Я решил от этой проблемы избавиться, добавив дополнительные фукции в мувиклип authentific, в которой в принципе хранятся все переменные, относящиеся к регистрации, авторизации, онлайн-данные (логин, пароль, статус и т.п.).

Осуществил я эти возможности путем ежесекундной проверки согласования UNIX-времени (кол-во секунд с 1.01.1970, по-моему так...). Одна из двух первых функций отправляет время в юзерский файл, другая - проверяет, а не отличается ли это время больше, чем на 5 секунд. Если разница больше 5 - юзер off, меньше - on. При этом, этот статус отправляется в файл статуса юзера.

Затем третья функция смотрит файл статуса, и если юзер on, то идет проверка онлайн-списков. Если юзер есть в этом списке (имеется в виду наличие 4-ех файлов: логин, х-координата, y-координата и угол поворота), то просто будет стоять на готове, как только не поступит команда off с сервера.

P.S. Только что пришла идея: вместо 4-ех файлов - один со всеми данными......

Команда off с сервера (файл статуса) придет только тогда, когда разница составит больше 5 секунд, что осуществляется как раз тем самым переключателем, про который я говорил выше. НО! Проверка положения (по моему способу - это нубский setInterval в 10 мс для функции проверки положения переключателя: "а не изменилось ли положение переключателя???") будет каждые 10 мс запускать проверку онлайн-листов, что будет накладно и для клиента и для сервера.

Тут-то мне и нужен слушатель для того, чтобы проверка запускалась только в тот момент, когда происходит переключение статуса.

Эта же функция, отвечающая за онлайн-списки, если она получит команду off, то тоже только в этот момент запускает новую проверку, во время которой произойдет удаление этих четырех файлов (P.S. Или одного....).

Четвертая функция отвечает за проверку количества юзеров-онлайн. Проверив наличие файлов в онлайн-списке, она создаст массив, куда запишет всех онлайн-юзеров. А вот тут начнется уже зацикленный в 100 мс процесс, который будет "прогонять" этот массив. "Прогонка" включает в себя: дублирование мувиков-героев, считывание настройки цвета героя, считывание координат и углов поворота. При этом, всё это будет высвечиваться на основной сцене. Отправка этих данных будет сразу же после нажатия или движения мыши.

Вот в принципе и всё. Сейчас попробую опять свой нубский (но немного другой способ) проверки переключателя. Если получится - сообщу...

Добавлено через 5 минут
Кстати... Я вот тут подумал... Зачем мне онлайн пользователи? Ведь все эти файлы с координатами, углами и прочим я могу сделать в основной папке users! При этом будет меньше проблем... Но потом до меня дошло: если я этого не сделаю, то каждый новый пользователь будет добавляться на поле и всё... Рандом координат я, конечно же, сделал.. Но как-то некрасиво получится: куча пользователей и все обездвижены... Или как вы считаете? С онлайнами или без них?

Добавлено через 25 часов 13 минут
Неужели никто поможет?..

Добавлено через 33 часа 37 минут
Я так понимаю, что никто с советом не поможет?
если что - вот ссылка на приложение. ОЧЕНЬ СЫРОЕ
http://forstudents.xe0.ru/multyplayerchat/
чтобы не мучиться
Логин 1111
Пароль 111111


Часовой пояс GMT +4, время: 23:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.