Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка несколько XML файлов (http://www.flasher.ru/forum/showthread.php?t=140372)

DenverZ 27.05.2010 18:02

Загрузка несколько XML файлов
 
Здравствуйте, подскажите, как правильно сделать свой обработчик загрузки XML файлов
т.е. есть несколько XML предположим:
hero.xml
weapon.xml
enemy.xml

мне надо загрузить их данные в главном классе Main и потом уже пользоваться там где надо...

вот примерно что получается:
Main класс

Код AS3:

   public class Main extends MovieClip
  {
      public function Main():void
      {
        var xmlHero:XMLLoader = new XMLLoader("Data/Hero.xml");
        var xmlWeapon:XMLLoader = new XMLLoader("Data/Weapon.xml");
        var xmlEnemy:XMLLoader = new XMLLoader("Data/Enemy.xml");
        trace(xmlHero.xmlData, xmlWeapon.xmlData, xmlEnemy.xmlData);
      }
  }

и класс XMLLoader

Код AS3:

package
{
  import flash.events.Event;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
 
  public class XMLLoader
  {
      var xmlData:XML;
 
      public function XMLLoader(file:String):void
      {
        var loader:URLLoader = new URLLoader(new URLRequest(file));
        loader.addEventListener(Event.COMPLETE, loadedXML);
      }
 
      private function loadedXML(e:Event):void
      {
        e.target.removeEventListener(Event.COMPLETE, getXML);
        xmlData = new XML(e.target.data);
      }
  }
}

выводит null, оно и понятно т.к. данные еще не загрузились
собственно вопрос как быть?

если на словах, то есть несколько XML файлов, надо их как-то удобно загрузить, что бы из любого класса был к ним доступ в любое время, причем хочется сделать это красиво и удобно, что бы не загромождать главный класс, поэтому и хочется в отдельном классе

есть идеи как сделать?

заранее благодарю

gldrawworld 27.05.2010 18:17

ну так диспатчите свое сообщение

Код AS3:

   public class Main extends MovieClip
  {
      public function Main():void
      {
        var xmlHero:XMLLoader = new XMLLoader("Data/Hero.xml");
        xmlHero.addEventListener(XMLLoader.LOADED,handlerXmlLoaded)
      }
      private function handlerXmlLoaded(event:Event):void
      {
              trace(event.target.xmlData);
      }
  }

Код AS3:

package
{
  import flash.events.Event;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
 
  public class XMLLoader
  {
      public var xmlData:XML;
      public static var LOADED:String = "loadedXML";
      public function XMLLoader(file:String):void
      {
        var loader:URLLoader = new URLLoader(new URLRequest(file));
        loader.addEventListener(Event.COMPLETE, loadedXML);
      }
 
      private function loadedXML(e:Event):void
      {
        e.target.removeEventListener(Event.COMPLETE, getXML);
        xmlData = new XML(e.target.data);
        dispatchEvent(new Event(XMLLoader.LOADED,true));
      }
  }
}


DenverZ 27.05.2010 18:26

спасибо за оперативный ответ :-) будем работать дальше =)

Добавлено через 3 часа 20 минут
2gldrawworld а не подскажите, как действовать именно с несколькими файлами XML?
в данном варианте как Вы показали мне нужно:

загрузить все три файла, и только в случае, когда загрузятся ВСЕ, продолжить работу

что-то не соображу как сделать

nOobCrafter 28.05.2010 00:03

Да грузите их последовательно, один за одним, елси все ок, то работаем дальше, елси на какой то стадии ошибка то извещаете об этом.


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

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