Объектно-ориентированный AS 3.0 - PullRequest
1 голос
/ 10 сентября 2011

Я новичок в ООП AS 3.0, поэтому ... У меня есть вопрос.

У меня есть два файла Main.as и LoadTheXML.as

в LoadTheXML классе Iу меня есть loadTheXML функция, там sortXML функция и там массив picturePathList, который я хочу использовать в Main.as

в Main.as У меня есть код, который запускает функцию loadTheXML:

var loadedXML:LoadTheXML = new LoadTheXML(urlVar);

так ... В Main.as я хотел бы написать:

            var rand:Number = Math.round(Math.random() * (a - 1));
            var mainLoader:Loader = new Loader();
            var mainRequest:URLRequest = new URLRequest(picturePathList[rand]);
            mainLoader.load(mainRequest);
            mainLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, mainLoaded);

            function mainLoaded(e:Event):void {
                mainPicPlacementX = (stage.stageWidth / 2) - (mainLoader.width / 2);

            so on and so on.... 
            }

Как мне вызвать массив picturePathList из класса LoadTheXML.

Спасибо!!!

ЗДЕСЬ Я положу файлы - пожалуйста, смотрите, потому что я не получил, что делать и как ... Файлы

Я хочувышеупомянутый код должен быть перемещен на Mainc.as, я думаю, в нем будет больше логики, и в любом случае я хотел бы посмотреть, как это делается. Если вы найдете какой-то учебник, я бы тоже хотел это увидеть. Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Сделайте ваше LoadToXML свойство объекта picturePathList общедоступным с помощью метода get:

public class LoadTheXML
{
    private var _picturePathList:Array;

    public function get picturePathList():Array
    {
        return _picturePathList;

    }// end function

    // ...

}// end class
1 голос
/ 10 сентября 2011

В целом AS3 является асинхронным; это означает, что он не должен ждать завершения первого оператора, прежде чем перейти ко второму оператору.

Так что вы должны прослушивать объект события, чтобы проверить, была ли задача выполнена или нет. Вы можете получить этот объект EventDispatcher.

Поэтому вы должны отправить объект события в sortXML функции.

dispatchEvent ( new Event ( Event.COMPLETE ) );

и в Main.as.

private function init():void
{
    loadedXML = new LoadTheXML(urlVar);
    loadedXML.addEventListener ( Event.COMPLETE, handleXMLLoaded );
}

private function handleXMLLoaded (e:Event):void
{
   var rand:Number = Math.round(Math.random() * (a - 1));
   var mainLoader:Loader = new Loader();
   var mainRequest:URLRequest = new URLRequest(loadedXML.picturePathList[rand]);
   mainLoader.load(mainRequest); 
   .....
   .....   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...