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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.09.2009, 19:56
Idon вне форума Посмотреть профиль Отправить личное сообщение для Idon Найти все сообщения от Idon
  № 11  
Ответить с цитированием
Idon

Регистрация: Sep 2009
Сообщений: 65
amesqit, откуда мне знать, какие у него задачи и когда именно требуется загружать обработчик. Если человек спрашивает про паузу в коде, значит вызов обработчика у него идет следом за созданием загрузчика, а может вообще у него обработка кнопкой инициализируется...

На счёт 4 пункта понятно - загнался)

Старый 04.09.2009, 04:20
Gava вне форума Посмотреть профиль Отправить личное сообщение для Gava Найти все сообщения от Gava
  № 12  
Ответить с цитированием
Gava

Регистрация: Aug 2009
Сообщений: 5
такс....ну свою ошибку осознал...на самом деле надо было побольше кода
ещё раз попробую донести свою задачу.
Первый класс:

loadData

Код AS3:
public class loadData
{
     public var loadXMLdata:XML;
     public function loadData(nameXML)
     {
          var loader:URLLoader = new URLLoader(new URLRequest(nameXML));
          loader.addEventListener(Event.COMPLETE, getDataXML);
          function getDataXML(e:Event):void
             {
	          loadXMLdata = XML(e.target.data);
	     }
     }
}
второй класс createObj

import loadData;

Код AS3:
public class createObj
{
     public var getXML:XML;
     public function createObj(nameXML)
     {
          var loadXML:loadData = new loadData(nameXML);
          getXML = loadXML.loadXMLdata;
 
          //дальнейшие действия с полученными данными
     }
}
вот так вот выглядит моя цель...
создавать объект после совершенного события не подходит так как в конструктор передается имя загружаемой XMLки да и к тому же loadData не должен быть прикручен ни к какому классу, а должен быть универсальным загрузчиком XML данных для любого обратившего к нему классу...

попробовал вынести отдельным методом

Код AS3:
getXML = loadXML.functionLoadXMLdata(nameXML);
но тогда функция functionLoadXMLdata должна возвращать данные типа XML, а сам метод получения по евенту подразумевает вызов сторонней функции getDataXML и опять ступор так как functionLoadXMLdata успевает мне вернуть значение null до того как getDataXML присвоит ему значение.

Ну в общем надеюсь понятен смысл задумки

З.Ы.
Idon все корявые коды с циклами я перепробовал, ничего кроме зависшего компа я не добился


Последний раз редактировалось Gava; 04.09.2009 в 04:51.
Старый 04.09.2009, 11:31
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 13  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Код:
var loadXML:loadData = new loadData(nameXML);
          getXML = loadXML.loadXMLdata;
Да что вы все пытаетесь null-то присвоить? Подписывайтесь на события. Когда данные загрузятся, тогда и работайте с ними.
__________________
#flasher@irc.trg.ru:6667

Старый 04.09.2009, 12:28
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 14  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Код AS3:
public class createObj
{
     public var getXML:XML;
     public function createObj(nameXML)
     {
          //Запускается асинхронная загрузка данных
          var loadXML:loadData = new loadData(nameXML);
 
          //На данный момент ещё ничего не загрузилось
          getXML = loadXML.loadXMLdata;
 
          //Всё ещё не загрузилось
 
          //До сих пор не загрузилось
 
          //Да и вообще не загрузится, внутри этого блока доступ к данным получить нельзя
     }
}
Данные становятся доступными после того, как выстреливает Event.COMPLETE у URLLoader'a, поэтому вам нужно подписаться на это событие. Если не хочется всё мешать в одну кучу и выделить специальный класс, который грузит и потом хранит данные, то лучший вариант - чтобы он испускал событие. Но я бы не стал это всё городить, так как в классе, который его использует, в итоге будет весь тот же самый код: переменная для данных, установка обработчика, инициализация загрузки и сам обработчик.
__________________
тонкий тролль, осеянный благодатью

Старый 04.09.2009, 13:00
Gava вне форума Посмотреть профиль Отправить личное сообщение для Gava Найти все сообщения от Gava
  № 15  
Ответить с цитированием
Gava

Регистрация: Aug 2009
Сообщений: 5
эммм...ну так что данный способ на корню глухая затея?
какой тогда вообще существует способ построения кода на основе полученных данных?
не подгрузки картинок или чего то ещё, а именно загрузки конфигов из внешних источников для построения всего класса аля сцены аля сайта аля портала...

просто у меня в голове не укладывается понятие модульности если одно и тоже повторяющееся действие нельзя объединить в один класс аля метод

да и многоуважаемые мною господа из adobe не могли ведь предусмотреть асинхронный метод не предусмотрев синхронный? Или я слишком их идеализирую?

Старый 04.09.2009, 13:49
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 16  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Синхронный метод есть в AIR А во флэше приходится довольствоваться только асинхронным. Использование событий - совершенно нормальная практика.
__________________
тонкий тролль, осеянный благодатью

Старый 04.09.2009, 13:51
Idon вне форума Посмотреть профиль Отправить личное сообщение для Idon Найти все сообщения от Idon
  № 17  
Ответить с цитированием
Idon

Регистрация: Sep 2009
Сообщений: 65
Если обойтись без доп. событий, то можно так попробовать:

Код AS3:
public class loadData
{
     public var loader:URLLoader;
     public function loadData(nameXML):void {
          loader = new URLLoader(new URLRequest(nameXML));
     }
}
Код AS3:
public class createObj
{
     private var getXML:XML;
     private var loadXML:loadData
     public function createObj(nameXML):void {
          loadXML = new loadData(nameXML);
          loadXML.loader.addEventListener(Event.COMPLETE, getDataXML);
     }
     private function getDataXML(e:Event):void {
          loadXML.loader.removeEventListener(Event.COMPLETE, getDataXML);
          getXML = XML(e.target.data);
 
          //дальнейшие действия с полученными данными
     }
}
Хотя так смысл в классе loadData вообще пропадает)


Последний раз редактировалось Idon; 04.09.2009 в 14:03.
Старый 04.09.2009, 14:05
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 18  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Цитата:
не подгрузки картинок или чего то ещё, а именно загрузки конфигов из внешних источников для построения всего класса аля сцены аля сайта аля портала...
Не понимаю, что вам не понятно? Начали загружать настройки, поставили прелоадер с надписью «загрузка настроек». Настройки загрузились, вы их распарсили и стройте спокойно на их основе свой UI.
__________________
#flasher@irc.trg.ru:6667

Старый 04.09.2009, 14:26
Gava вне форума Посмотреть профиль Отправить личное сообщение для Gava Найти все сообщения от Gava
  № 19  
Ответить с цитированием
Gava

Регистрация: Aug 2009
Сообщений: 5
Ну если так то все понятно, вроде бы...
Просто при реализации натолкнулся на бесконечное повторение одной и той же функции, а именно подгрузки XML через URLLoader и вот решил эти 4 строчки вынести в 1 класс ну и юзать его при необходимости.
Как-то мне показалось что это лежит на поверхности и что отсутсвие в гугле готовых решений объясняется банальностью и тривиальностью что об этом даже никто не пишет


Ну в общем спасибо всем кто учавствовал в моем разочаровании в adobe

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

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

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


 


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


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