我在Flash中加载文件相当新,虽然我已经习惯了C#的xml文件序列化的简易性和舒适性,但我完全迷失了我需要在Flash中处理它的方法。我有两种类型的xml文件需要加载,我希望你能帮我正确设置我的代码!
让我们从第一个xml文件开始。它看起来像这样(稍后会有更多的Level元素):
<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Level>
<filepath>../Assets/Level.xml</filepath>
</Level>
</Root>
加载它的代码低于
public function loadLevelFilePaths():void
{
trace("Loading XML");
var XMLData:XML = new XML(new URLRequest("../Assets/LevelFilePaths.xml"));
for each (var node:XML in XMLData.Level)
{
levelFilePaths.push(node.filepath.text());
trace("Level " + levelFilePaths[levelFilePaths.length - 1] + " loaded!");
}
}
第二种类型的XML文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Level xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<level>
<Room>
<tiles />
<IsEmpty>true</IsEmpty>
</Room>
</level>
</Level>
为了空间,我没有包含尽可能大的空间,但是tile节点最多可以包含大约100个“Tiles”,每个都有自己的数据集,并且最多可以有100个房间。水平。
我还没有编写代码来加载它,因为我不太明白如何加载我上面发布的简单xml文件。
如果有人愿意解释这个过程在Flash中是如何运作的,我也将不胜感激!
答案 0 :(得分:1)
要加载xml文件,可以使用URLLoader将数据作为String加载,然后将其传递给XML构造函数。
请注意,为了捕获格式错误的xml,将try / catch放在新XML上通常是一个好主意。
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
var urlLoader:URLLoader = new URLLoader(new URLRequest("LevelFilePaths.xml"));
urlLoader.addEventListener(Event.COMPLETE, dataLoadCompleteHandler);
function dataLoadCompleteHandler(event:Event) {
var urlLoader:URLLoader = URLLoader(event.currentTarget);
var xml:XML;
try {
// urlLoader.data contains the file contents as a String.
xml = new XML(urlLoader.data);
} catch (e:Error) {
trace("The xml was malformed.");
}
if (xml) {
trace("XML Loaded");
for each (var level in xml.level) {
for each (var room in level.Room) {
trace("Room: " + room.toXMLString());
trace("is empty: " + room.IsEmpty.text());
}
}
}
}