Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 将函数调用为属性AS3时出错_Actionscript 3 - Fatal编程技术网

Actionscript 3 将函数调用为属性AS3时出错

Actionscript 3 将函数调用为属性AS3时出错,actionscript-3,Actionscript 3,C:…\HandleXML.as,第28 1120行:访问未定义的属性processXML 为什么?。。。这不是我的文档类,但其中没有调用该类的内容。当我把它放在文档类中时,它就起作用了,但我正在尝试将文档类拆分为多个类。不管我读什么,有多节课对我来说还是很奇怪 package { import flash.events.Event; import flash.events.MouseEvent; import flash.events.KeyboardEvent;

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

为什么?。。。这不是我的文档类,但其中没有调用该类的内容。当我把它放在文档类中时,它就起作用了,但我正在尝试将文档类拆分为多个类。不管我读什么,有多节课对我来说还是很奇怪

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());
                }
            }
        }
    }
}
正如您所指出的,UseGeneric函数被声明为静态函数,但它不应该是:

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

我想我不太了解事件的听众。不过,到目前为止,我一直在毫无问题地使用它们。我以为它像。。。要侦听的addEventListenerEvent,听到事件后使用的函数。我从来没有想过函数是变量或属性,除非使用函数get。。。我知道什么是常规的旧变量…对不起,我没有注意到它是一个函数。尝试使用“this.processXML”并查看其是否有效。C:…HandleXML.as,第28 1061行:通过静态类型为HandleXML.ahhh的引用调用可能未定义的方法addEventListener。我想这是因为我使用了公共静态函数。。。现在工作很好。非常感谢你!先生,你是个学者。这是因为我从下拉列表中调用了2个函数。。。case-genericMap:handleXML.UseGeneric;生成地图;打破它试图在数组传回之前生成映射。如何在ParseIntoArray完成后直接生成映射?我会弄明白的。。。谢谢!