调用函数时出错 属性 AS3
Error is calling a function a property AS3
C:...\HandleXML.as, Line 28 1120: Access of undefined property processXML.
为什么?...这不是我的文档 class,但其中没有调用此 class 的内容。当我把它放在我的文档 class 中时它起作用了,但我试图将文档 class 分成多个 classes。无论我读什么,拥有多个 classes 对我来说仍然很奇怪。
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);
}
C:...\HandleXML.as, Line 28 1120: Access of undefined property processXML.
为什么?...这不是我的文档 class,但其中没有调用此 class 的内容。当我把它放在我的文档 class 中时它起作用了,但我试图将文档 class 分成多个 classes。无论我读什么,拥有多个 classes 对我来说仍然很奇怪。
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);
}