错误是将函数调用为属性AS3

时间:2015-04-07 20:52:31

标签: actionscript-3

  

C:... \ HandleXML.as,第28行1120:访问未定义的属性processXML。

为什么?...这不是我的Document类,但是在这个类中没有任何调用。它在我的文档课中有用,但是我试图将文档类分成多个类。无论我读什么,有多个课程对我来说仍然很奇怪。

package  {

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.KeyboardEvent;
    import flash.xml.*;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.net.FileReference;
    import flash.net.FileFilter;

    public class HandleXML {

        public static var mapXML:XML;
        public var saveXML:XML;
        public var file:FileReference; 
        public var fileLoader:URLLoader;
        public var saveFile:FileReference; 

        public function HandleXML() 
        {
            // constructor code
        }
        public static function UseGeneric()
        {
            var myLoader:URLLoader = new URLLoader();
            myLoader.load(new URLRequest("Maps/TestMap.xml"));
            myLoader.addEventListener(Event.COMPLETE, processXML);
        }

        public function loadFileDialogue():void 
        { 
            file =  new FileReference();   
            var xmlFileTypes:FileFilter =  new FileFilter("XML (Maps/*.xml)",  "Maps/*.xml;");   
            file.browse();
            file.addEventListener(Event.SELECT, selectFile);
        }

        public function selectFile(e:Event):void 
        { 
            file.addEventListener(Event.COMPLETE, loadFile); 
            file.load();
        }

        function loadFile(e:Event):void 
        { 
            fileLoader =  new URLLoader();
            fileLoader.load(new URLRequest("Maps/"+file.name));
            fileLoader.addEventListener(Event.COMPLETE, processXML);
        }

        public function processXML(e:Event)
        {
            mapXML = new XML(e.target.data);
            ParseIntoArray();
        }

        public function SaveFile():void
        {
            BuildSaveXML();
            saveFile = new FileReference(); 
            saveFile.save((saveXML), "SavedXML.xml");
        }

        public function BuildSaveXML()
        {
            var xmlOutput:String =  "<Map>" + 
                                    "<MapWidth>" + mapXML.MapWidth + "</MapWidth>" +
                                    "<MapHeight>" + mapXML.MapHeight + "</MapHeight>" +
                                    "<ROW>" + Engine.mapArray.toString()+"</ROW>" + 
                                    "</Map>";

            saveXML = new XML(xmlOutput);
        }

        public function ParseIntoArray()
        {
            var tempArray:Array = new Array();
            var tempStr:String = mapXML.ROW.toString();

            tempStr = tempStr.replace(/<ROW>/g, "");
            tempStr = tempStr.replace(/<\/ROW>/g, "");

            tempArray.push(tempStr.split(","));

            for(var i:int = 0; i < mapXML.MapHeight; i++)
            {
                Engine.mapArray[i] = [];

                for(var j:int = 0; j < mapXML.MapWidth; j++)
                {
                    Engine.mapArray[i].push(tempArray[0].shift());
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

正如您所指出的那样,UseGeneric函数在不应该被声明为静态时为:

public function UseGeneric()
{
    var myLoader:URLLoader = new URLLoader();
    myLoader.load(new URLRequest("Maps/TestMap.xml"));
    myLoader.addEventListener(Event.COMPLETE, processXML);
}