pytmx错误: “XML tile elements are no longer supported. Must use base64 or csv map formats.“
2023-09-11 14:20:50 时间
\pytmx\pytmx.py", line 1311, in parse_xml
"XML tile elements are no longer supported. Must use base64 or csv map formats."
不再支持XML平铺元素。必须使用base64或csv映射格式。
重新调整一下,变换一个tmx文件中的图块层格式就可以解决了。
出错代码:
class TiledTileLayer(TiledElement):
"""Represents a TileLayer
To just get the tile images, use TiledTileLayer.tiles()
"""
def __init__(self, parent, node):
TiledElement.__init__(self)
self.parent = parent
self.data = list()
# defaults from the specification
self.name = None
self.width = 0
self.height = 0
self.opacity = 1.0
self.visible = True
self.offsetx = 0
self.offsety = 0
self.parse_xml(node)
def __iter__(self):
return self.iter_data()
def iter_data(self) -> Iterable[Tuple[int, int, int]]:
"""
Yields X, Y, GID tuples for each tile in the layer
Returns:
Iterator of X, Y, GID tuples for each tile in the layer
"""
for y, row in enumerate(self.data):
for x, gid in enumerate(row):
yield x, y, gid
def tiles(self):
"""
Yields X, Y, Image tuples for each tile in the layer
Returns:
Iterator of X, Y, Image tuples for each tile in the layer
"""
images = self.parent.images
for x, y, gid in [i for i in self.iter_data() if i[2]]:
yield x, y, images[gid]
def _set_properties(self, node):
TiledElement._set_properties(self, node)
# TODO: make class/layer-specific type casting
# layer height and width must be int, but TiledElement.set_properties()
# make a float by default, so recast as int here
self.height = int(self.height)
self.width = int(self.width)
def parse_xml(self, node: ElementTree.Element):
"""
Parse a Tile Layer from ElementTree xml node
Args:
node: node to parse
"""
self._set_properties(node)
data_node = node.find("data")
chunk_nodes = data_node.findall("chunk")
if chunk_nodes:
msg = "TMX map size: infinite is not supported."
logger.error(msg)
raise Exception
child = data_node.find("tile")
if child is not None:
raise ValueError(
"XML tile elements are no longer supported. Must use base64 or csv map formats."
)
reg = self.parent.register_gid
temp = list()
temp_append = temp.append
for gid in unpack_gids(
text=data_node.text.strip(),
encoding=data_node.get("encoding", None),
compression=data_node.get("compression", None),
):
if gid == 0:
temp_append(0)
elif gid < GID_TRANS_ROT:
gid = reg(gid)
temp_append(gid)
else:
gid, flags = decode_gid(gid)
gid = reg(gid, flags)
temp_append(gid)
self.data = reshape_data(temp, self.width)
return self
相关文章
- 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
- JBPM4常用错误汇总 收藏
- win10系统更新不了,总出现错误0xc8000442
- 用ABAP进行HTTP编程如何获取交互中的错误明细
- Atitit xml转json总结 目录 1.1. XML和JSON之间没有直接映射;元素类型问题1 1.2. Xml与json的对应关系2 1.3. 范例2 2. Jsonlib的问题,,不
- paip.配置ef_unified_filter() failed ext_filter_module mod_ext_filter.so apache 错误解决
- paip. 解决php 以及 python 连接access无效的参数量。参数不足,期待是 1”的错误
- [IDEA]IntelliJ IDEA 报 This license BIG3CLIK6F has been cancelled 错误
- 使用 describe命令 进行 Kubernetes pod 错误排查
- 本地安装基于Kubernetes的Kyma时遇到的一些错误消息
- SAP OData 服务关于本地文件作为附件上传的一些错误消息
- [手游项目3]-9-Go语言sync.Map(在并发环境中使用的map)
- linux标准输入/输出/错误
- Android开展:ADT+Eclipse使用错误:Text editor does not have a document provider
- Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象