Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.06.2011, 09:37
EndoCrinologist вне форума Посмотреть профиль Отправить личное сообщение для EndoCrinologist Найти все сообщения от EndoCrinologist
  № 1  
Ответить с цитированием
EndoCrinologist
 
Аватар для EndoCrinologist

блогер
Регистрация: Feb 2011
Адрес: Россия, Тольятти
Сообщений: 301
Записей в блоге: 10
По умолчанию Какой операцией можно остановить действие функции?

Вот есть функция, проверяющая обновление на сайте:

Код AS1/AS2:
_root.restart._visible = 0; // restart - это мувик с окошком, предупреждающий о том, что игра претерпела обновление и поэтому страницу с игрой необходимо перезагрузить
 
function Update():Void{ //сама функция обновления
	_urls = _root.urls + "update.upd"; //адрес файла, в котором написана строка "upd=1" (это означает то, что игра обновилась) ИЛИ "upd=0" (это означает, что игра пока не претерпевала никаких изменений)
 
	var lv:LoadVars = new LoadVars()
	lv.onLoad = lvOnLoad;
	lv.load(_urls);
 
	function lvOnLoad (suc:Boolean) {
		if(suc){ //если загрузка данных была успешна 
                   //this ссылается на экземпляр LoadVars, который получает переменные из файла
			upd = parseFloat(this.upd); //получаю значение параметра upd
 
			if (upd == 1){ // если обновления ЕСТЬ
				_root.restart._visible = 1; //показываю мувик с  окошком, в котором предупреждение, что игру необходимо перезагрузить
			} else { // если обновлений НЕ НАБЛЮДАЛОСЬ
				_root.restart._visible = 0; // окошко, естественно, не показывать
			}
 
		}
	}
}
var upr = setInterval(Update,2000); //повторять операцию проверки каждые 2 секунды
Эта функция повторяется каждые 2 секунды, так как, например, я в это время игру дорабатывал и затем с помощью кнопки в этой же игре отправил данные на сервер. Эти данные обработались и записали в тот самый файл "update.upd" значение "upd" равное 1. При этом, так как У ВСЕХ игроков идет проверка на сервер каждые 2 секунды, то после того, как функция обнаружила то, что "upd=1", а не 0, то она показывает окошко с предупреждением.

Проблема заключается в следующем:
В этом же окошке есть кнопка ПЕРЕЗАПУСК, которая одновременно отправляет данные на сервер (которые изменяют в файле update.upd значение upd с единицы на нуль) и перезагружает страницу.

Но ведь если КТО-ТО ОДИН из играющих нажмет на неё, то автоматически у ОСТАЛЬНЫХ игроков уберется окошко (ведь они же всё сверяют с одним файлом "update.upd", в котором стало значение не 1, а 0!). И у них окошко может появиться на каких-то пару секунд и они не успеют нажать ПЕРЕЗАПУСК, чтобы играть в ОБНОВЛЁННУЮ версию, и поэтому продолжат играть в старую.

Вот сам вопрос:
Как можно сделать остановку выполнения функции, чтобы ВСЕ игроки, играющие в ДАННЫЙ МОМЕНТ успели нажать на ПЕРЕЗАПУСК?
__________________
Надо сменить подпись...

Старый 10.06.2011, 10:27
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
какого рода у вас обновления???
Перезалили файлы?
Поддерживайте в БД свой upd для КАЖДОГО юзера.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 12.06.2011, 02:48
EndoCrinologist вне форума Посмотреть профиль Отправить личное сообщение для EndoCrinologist Найти все сообщения от EndoCrinologist
  № 3  
Ответить с цитированием
EndoCrinologist
 
Аватар для EndoCrinologist

блогер
Регистрация: Feb 2011
Адрес: Россия, Тольятти
Сообщений: 301
Записей в блоге: 10
пользователь играет в swf-файле.. я доработал игру, удалил старый swf, залил новый.. но пользователь страницу не перезагружал, поэтому он еще играет в старую версию.. я активирую "окошко" и пока пользователь не перезагрузится, оно не уберется... просто это будет проблематично осуществить для КАЖДОГО пользователя... мне надо чтобы функция lvOnLoad остановилась до тех пор, пока пользователь не нажмет кнопку ПЕРЕЗАПУСК..
__________________
Надо сменить подпись...

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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