面向对象的AS 3.0

时间:2011-09-10 11:05:41

标签: flash actionscript-3 actionscript

我是OOP AS 3.0的新手,所以..我有一个问题。

我有两个文件Main.asLoadTheXML.as

LoadTheXML课程中我有loadTheXML个函数,在sortXML函数中,并且在那里我想要在picturePathList <中使用数组Main.as / p> 在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.... 
            }

如何从LoadTheXML类调用picturePathList数组。

感谢!!!

在这里我会把文件 - 请看,因为我不知道该怎么做以及如何...... The Files

我希望将上面提到的代码移到Mainc.as我想这会有更多逻辑,无论如何我想看看它是如何完成的..如果你找到一些教程我也想看到它..谢谢!

2 个答案:

答案 0 :(得分:2)

通过getter方法公开访问LoadToXML对象的picturePathList属性:

public class LoadTheXML
{
    private var _picturePathList:Array;

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

    }// end function

    // ...

}// end class

答案 1 :(得分:1)

一般来说,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); 
   .....
   .....   
}