我使用的是以下代码:
private function loadLevel(xml:Class):void
{
var rawData:ByteArray = new xml;
var dataString:String = rawData.readUTFBytes(rawData.length);
var xmlData:XML = new XML(dataString);
var dataList:XMLList;
var dataElement:XML;
dataList = xmlData.Tiles.tile;
for each(dataElement in dataList)
{
trace("HI");
_tiles.setTile(int(dataElement.@x) / 120, int(dataElement.@y) / 120, int(dataElement.@tx) / 120);
}
}
但我找不到踪迹!!
这是tmx文件:
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="16" height="9" tilewidth="120" tileheight="120">
<tileset firstgid="1" name="u" tilewidth="120" tileheight="120">
<image source="../assets/tileset1.png" width="360" height="120"/>
</tileset>
<layer name="Tiles" width="16" height="9">
<data>
<tile gid="2"/>
<tile gid="2"/>
blablabla repeat
</data>
</layer>
<objectgroup name="Spawn" width="16" height="9">
<object x="120" y="892" width="122" height="28"/>
<object x="2222" y="-244"/>
</objectgroup>
</map>
我遵循了本教程:https://www.youtube.com/watch?v=Ek0HLk6wBmQ为什么我没有收到跟踪声明?它就是不起作用
是否要访问<layer name="Tiles" width="16" height="9">
元素?
如果是的话,试试这个
var xmlData:XML = new XML(dataString);
var name:String = xmlData.layer.@name;
var width:int = xmlData.layer.@width;
var height:int = xmlData.layer.@height;
如果你想访问这些元素
<tile gid="2"/>
<tile gid="2"/>
试试这个
for each(var element:XML in xmlData.layer.data.tile)
{
trace(element.@gid);
}
如果您想访问这些元素。第一个匹配与第二个节点相同的元素添加宽度和高度属性。
<object x="120" y="892" width="122" height="28"/>
<object x="2222" y="-244" widht="200" height"400"/>
试试这个
for each(var element:XML in xmlData.objectgroup.object)
{
trace("x: " + element.@x + " y: " + element.@y + " width: " + element.@width + " height: " + element.@height);
}
本教程使用Actionscript 3.0 E4X(ECMA for XML(语法来理解这将对您有所帮助。
已编辑
我谈谈你的问题。请参阅以下内容。
dataList = xmlData.Tiles.tile;
是错误的,因为xml没有Tiles
节点。看到一个xml,
tile
节点只访问如下语法:xmlData.layer.data.tile
。但是,您有一个两个tile节点,所以xmlData.layer.data.tile返回数组。所以第一个瓦片节点是xmlData.layer.data.tile[0],而第二个瓦片节点则是xmlData.layer.data.tile[1].tile
节点不具有任何x
、y
、tx
属性。只有一个CCD_ 10节点。但CCD_ 11没有出现。
p.s:您必须创建一个与视频中相同的xml。。。教程算法基于视频中指定的xml。但是,我想在解决这个问题之前。您必须了解AS3.0 E4X。
E4X教程:
http://code.tutsplus.com/tutorials/as3-101-xml-basix--active-2908http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg1.htmhttp://www.republicofcode.com/tutorials/flash/as3xml/