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

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

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Вопрос по xml

Всем привет. Возник вопрос по загрузке данных из xml

Код AS3:
	public function LOGIN():void
		{
	url_loader.addEventListener(Event.COMPLETE, CL_COMPLETE);
url_loader.load('script.php');
 
}
 
 
	public function CL_COMPLETE(e:Event = null):void
		{
	if (e.target.data)
			{
 
				xml = XML(e.target.data);
trace(xml);
}
}
В данном коде класса выгружаем данные из xml. Но они выгружаются один раз. То есть в дальнейшем, xml получает другие значения, но чтобы они обновились во flash, нужно заново запустить LOGIN();
Но после запуска данной функции, данные выгружаются не сразу и если к примеру код такой будет

Код AS3:
function age():void
{
CL.LOGIN(); //CL - класс в котором находится ф-ция LOGIN();
if(CL.xml.user_age <= 3)
{
trace("Тратата");
}
}
Ф-ция age завершится до того, как xml.user_age получит новое значение, от того скрипт надо либо вызывать дважды, а то и трижды или фиг знает че вообще можно сделать. Мне нужно, чтобы условие срабатывало только после того, как xml получит свои значения. Конечно в каждом классе можно создавать новую xml переменную. Но не знаю насколько это будет правильно и удобно, вроде проще обращаться к одному xml из других классов

Старый 21.12.2014, 19:10
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 2  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Если Вы из разных классов запускаете загрузку одного и того же xml,
то лучше при первой загрузке этот xml перевести в object.
Если xml каждый раз разные, то нужно делать систему для
обработки синхронных действий. То есть, в классе, в котором Вы
вызываете LOGIN можно сделать например так
Код AS3:
_sync = new CustomSyncClass( this.completeHandler );
А в классе CustomSyncClass сделать подписку на загрузку и ошибки.

Старый 21.12.2014, 19:20
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А как его в object перевести?

Старый 21.12.2014, 20:15
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 4  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
А как его в object перевести?
Я ошибся, xml у as3 нативный. Тогда либо загрузите и сохраните ссылку на него
либо второй вариант.

Старый 22.12.2014, 00:14
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 5  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Цитата:
А в классе CustomSyncClass сделать подписку на загрузку и ошибки.
Не совсем понял, какую подписку на загрузку и ошибки?


Последний раз редактировалось Godwarlock; 22.12.2014 в 05:20.
Старый 22.12.2014, 11:53
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 6  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Godwarlock
Если хочешь вынести логин в отдельный класс - чтобы ловить окончание загрузки извне, наследуй класс логина от EventDispatcher и по окончании загрузки, в твоем примере в функции CL_COMPLETE бросай событие о завершении: dispatchEvent(new Event(complete)); Тогда извне будешь точно так же подписываться на событие и ждать окончания загрузки
Код AS3:
function age():void
{
CL.LOGIN(); //CL - класс в котором находится ф-ция LOGIN()
cl.addEventListener(cl.complete,oncomplete);
}
private function oncomplete(e:Event):void {
// в этот момент данные о логине точно получены - работай с ними
}
__________________
interplanety

Старый 22.12.2014, 14:33
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 7  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
col: 29 Error: Access of undefined property complete.
Вот что выдаёт. Если создать переменную complete её к типу string отнести?

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
col: 29 Error: Access of undefined property complete.
Вот что выдаёт. Если создать переменную complete её к типу string отнести?
Да. Это определение вида события, которое твой класс будет кидать. Как-то так:
Код AS3:
public static const complete:String = "MyLoginInfoLoadComplete";
__________________
interplanety

Старый 08.01.2015, 02:54
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 9  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Всё разобрался)


Последний раз редактировалось Godwarlock; 08.01.2015 в 03:31.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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