我想从tmx文件中获取压缩层数据.谁知道在javascript中解压缩gzip和zlib字符串的库?我尝试zlib但它对我不起作用.例如,tmx文件中的图层数据是:
<data encoding="base64" compression="zlib">
eJztwTEBAAAAwqD1T20JT6AAAHgaCWAAAQ==
</data>
Run Code Online (Sandbox Code Playgroud)
我的javascript代码是
var base64Data = "eJztwTEBAAAAwqD1T20JT6AAAHgaCWAAAQ==";
var compressData = atob(base64Data);
var inflate = new Zlib.Inflate(compressData);
var output = inflate.decompress();
Run Code Online (Sandbox Code Playgroud)
它运行时显示消息错误"不支持的压缩方法".但我尝试使用在线工具解压缩为http://i-tools.org/gzip,它返回正确的字符串.
是否有用于处理python中的TMX(翻译记忆库eXchange)文件的模块,如果没有的话,还有另一种方法吗?
就目前而言,我有一个2gb的巨大文件,上面有法英字幕。是否有可能处理这样的文件,还是我必须将其分解?
再次感谢您提前帮助我.
值得庆幸的是,我已经能够在没有太大问题的情况下将TMX导入到libgdx游戏中,但是现在这是第一次使用对象层,此时此刻我只想将平台作为对象(即我有1x Tile Layer显示我的背景图像和上面的1x Object Layer.现在我已经看到我可以绘制线条和/或方框,圆圈等来创建"区域",我可以将其拉入我的代码中(善良只知道atm但我会稍后/很快就会知道)
但我在Tiled看到按钮 - 插入平铺(T) - 存在.我正在尝试使用它但是当我使用平台作为平台放置它时,它正好在按下鼠标的地方,除了删除它之外我无法移动它.我现在只想复制粘贴它们的整行,而Level1只能在一条扁平线上放置50个瓷砖,这样我就可以完成所有工作了.对我来说,Tiled不能做到这一点似乎很奇怪,但我花了很多年的时间寻找方法却无法找到它.
我错过了什么,或者这是不可能的?如果是后者,经验丰富的平铺用户(谁制作2d平台游戏)如何在Tiled环境中创建如此简单的示例呢?
这是我的来源
package com.effect.bio;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.badlogic.gdx.math.Rectangle;
public class AppController implements ApplicationListener {
static final int WIDTH = 480;
static final int HEIGHT = 320;
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private Mesh mesh;
private Rectangle glViewport;
private float rotationSpeed;
TiledMap map;
TiledMapTileLayer layer;
OrthogonalTiledMapRenderer renderer;
@Override
public void create() …
Run Code Online (Sandbox Code Playgroud) 所以我试图在我的游戏中实现碰撞检测,我在tmx文件中有一个名为Collision的图层.LIBGDX现场教程不涉及与对象层的交互,很难弄清楚如何首先渲染地图.这就是我渲染屏幕的方式,我想学习如何获取碰撞图层,然后让我的精灵与它进行交互.
@Override
public void render(float delta) {
translateCamera();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render(bgLayers);
// renderer.render();
batch.begin();
batch.draw(playerDirect, Gdx.graphics.getWidth() / 2,
Gdx.graphics.getHeight() / 2);
batch.end();
renderer.render(fgLayers);
}
Run Code Online (Sandbox Code Playgroud) 我有一个 XSLT 样式表,可将 XML 数据转换为 XSL-FO(然后使用 Apache FOP 将其呈现为 PDF)。
现在,我需要将输出本地化为几种不同的语言。例如,XSLT 生成的表的列标题需要本地化。下面是生成带有列标题“Date”、“Name”和“Something”的表标题的 XSLT 的简化片段:
...
<fo:table>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block>Date</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Name</fo:block>
</fo:table-cell>
<fo:table-cell>
</fo:block>Something</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
</fo:table-body>
<xsl:apply-templates select="item"/>
</fo:table-body>
</fo:table>
...
Run Code Online (Sandbox Code Playgroud)
我们已经在系统的其他部分使用TMX文件进行国际化,因此这似乎是一种自然的方法。下面是一个 TMX 文件的简化示例,其中包含两个语言的几个字符串:
<tmx version="1.4b">
<body>
<tu tuid="DATE">
<tuv xml:lang="en"><seg>Date</seg></tuv>
<tuv xml:lang="sv"><seg>Datum</seg></tuv>
</tu>
<tu tuid="NAME">
<tuv xml:lang="en"><seg>Name</seg></tuv>
<tuv xml:lang="sv"><seg>Namn</seg></tuv>
</tu>
</body>
</tmx>
Run Code Online (Sandbox Code Playgroud)
因此,基本上我想用 TMX 文件中的字符串引用(使用tuid属性)替换 XSLT 中的硬编码列标题,以便相同的 XSLT 可以生成不同语言的输出。
但我似乎找不到任何有关如何将 TMX 文件与 XSLT 结合使用的资源。示例或指向一些好的教程的指针将不胜感激。
tmx ×6
java ×2
libgdx ×2
android ×1
compression ×1
gzip ×1
javascript ×1
localization ×1
oop ×1
opengl-es ×1
python-3.x ×1
pytmx ×1
tiled ×1
xsl-fo ×1
xslt ×1
zlib ×1