Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   многомерные массивы (http://www.flasher.ru/forum/showthread.php?t=178430)

MAGISTRS 21.04.2012 02:27

многомерные массивы
 
пытаюсь сделать так, чтобы массив, состоящий из массивов (3 штуки) парсированных от xml строк, загружался из мэйна. но компилятор выдает:
[Fault] exception, information=TypeError: Error #1010: Термин не определен и не имеет свойств.
Fault, Main() at Main.as:22

Main.as
Код AS3:

package XmlMassiv
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.display.*;
        import flash.net.*;
        import flash.events.*;
        import flash.system.*;
 
        /**
        * ...
        * @author nnn
        */

        public class Main extends Sprite
        {
 
                public function Main():void
                {
                var t:xmlPars = new xmlPars();
                trace(t.massiv[0][0]);
                } 
 
        }
 
}

xmlPars.as

Код AS3:

package XmlMassiv 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.display.*;
        import flash.net.*;
        import flash.events.*;
        import flash.system.*;
        /**
        * ...
        * @author nnn
        */

        public class xmlPars
        {
                var massiv:Array=new Array();
                public  function xmlPars ():void
                {
                                var xmlLoader:URLLoader= new URLLoader();
                            xmlLoader.load(new URLRequest("xml"));
                            xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
 
 
                }
 
 
                        public  function LoadXML(e:Event):void
                        {
 
 
                                massiv[0] = new Array();
                                massiv[1] = new Array();
                                massiv[2] = new Array();
                                var pubDateXML:Array = new Array ();
                                var descriptionXML:Array = new Array ();
                                var titleXML:Array = new Array ();
                                var xmlData = new XML(e.target.data);
 
 
                                    for (var j:Number = 0; j < xmlData..item.length(); j++ )
                                          {
                                            massiv[0][j] = String(xmlData..item.pubDate[j]);
                                        }
                                    for (var i:Number = 0; i < xmlData..item.length(); i++ )
                                        {
                                            massiv[1][i] = String(xmlData..item.title[i]);
                                        }
 
                                    for (var k:Number = 0; k < xmlData..item.length(); k++ )
                                        {
                                          massiv[2][k] = String(xmlData..item.description[k]);
                                        }
 
                        }
 
        }
 
}


TanaTiX 21.04.2012 03:51

LoadXML срабатывает после того как произошел запрос на получение данных (на загрузку необходимо время)
massiv вляется internal (по умолчанию), следовательно будет доступен только в случае нахождения в пределах одного пакета обоих классов (по коду так и есть, но код ужасен)

MAGISTRS 21.04.2012 11:10

честно говоря не очень понял что нужно сделать чтобы ошибка не вылетала и все работало..

Inet_PC 21.04.2012 12:16

Код AS3:

private var t:xmlPars;
public function Main():void
{
        super();
        t = new xmlPars(onLoadXML);
} 
 
private function onLoadXML():void
{
        trace(t.massiv[0][0]);
}
//..
public var massiv:Array=new Array();
private var _onComplete:Function;
//..
 
public function xmlPars (onComplete:Function = null):void
{
        _onComplete = onComplete;
        //..
}
 
public  function LoadXML(e:Event):void
{
        //...
        if (_onComplete != null)
        {
                _onComplete();
                _onComplete = null;
        }
}

Приблизительно так, проверяйте (писал на коленке).
Название классов нужно начинать с большой буквы, а названия методов с маленькой.
Необходимо слушать событие ошибки загрузки.

MAGISTRS 22.04.2012 13:46

ОГРОМНОЕ СПАСИБО!!! )))))


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

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