Tiled 编辑地形后 输出简化
做2d游戏,用Tiled编辑地形信息,另存为json后 信息太复杂,这里简单将地形 输出。
第一个是html文件 浏览器打开将 tiled输出的json导入,会自动生成一个 原文件名+ _Cut.json的文件里面只有地形,
想另行定义就改红色字体部分即可
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<input type="file" id="files" style="display: none" οnchange="fileImport();">
<input type="button" id="fileImport" value="导入">
</div>
<script type="text/javascript" src="FileSaver.js" ></script>
<script>
//点击导入按钮,使files触发点击事件,然后完成读取文件的操作
document.getElementById("fileImport").onclick = function () {
document.getElementById("files").click();
}
function fileImport() {
//获取读取我文件的File对象
var selectedFile = document.getElementById('files').files[0];
var name = selectedFile.name;//读取选中文件的文件名
var size = selectedFile.size;//读取选中文件的大小
console.log("文件名:"+name+"大小:"+size);
var reader = new FileReader();//这是核心,读取操作就是由它完成.
reader.readAsText(selectedFile);//读取文件的内容,也可以读取文件的URL
reader.onload = function () {
//当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可
a = this.result
if(typeof a == "string"){
a = JSON.parse(a)
}
console.log(a);
console.log("************************");
var c = a.tilesets[0].tiles;
for(var i in c){
c[i] = c[i].terrain.join()
}
console.log(c);
var file = new File([JSON.stringify(c)], name.substr(0,name.length - 5) + "_Cut.json", { type: "text/json;charset=utf-8" });
saveAs(file);
}
}
</script>
</body>
</html>
二附上 FileSaver.js
var saveAs = saveAs || (function(view) {
"use strict";
// IE <10 is explicitly unsupported
if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
return;
}
var
doc = view.document
// only get URL when necessary in case Blob.js hasn't overridden it yet
, get_URL = function() {
return view.URL || view.webkitURL || view;
}
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
, can_use_save_link = "download" in save_link
, click = function(node) {
var event = new MouseEvent("click");
node.dispatchEvent(event);
}
, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
, throw_outside = function(ex) {
(view.setImmediate || view.setTimeout)(function() {
throw ex;
}, 0);
}
, force_saveable_type = "application/octet-stream"
// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
, arbitrary_revoke_timeout = 1000 * 40 // in ms
, revoke = function(file) {
var revoker = function() {
if (typeof file === "string") { // file is an object URL
get_URL().revokeObjectURL(file);
} else { // file is a File
file.remove();
}
};
setTimeout(revoker, arbitrary_revoke_timeout);
}
, dispatch = function(filesaver, event_types, event) {
event_types = [].concat(event_types);
var i = event_types.length;
while (i--) {
var listener = filesaver["on" + event_types[i]];
if (typeof listener === "function") {
try {
listener.call(filesaver, event || filesaver);
} catch (ex) {
throw_outside(ex);
}
}
}
}
, auto_bom = function(blob) {
// prepend BOM for UTF-8 XML and text/* types (including HTML)
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
}
return blob;
}
, FileSaver = function(blob, name, no_auto_bom) {
if (!no_auto_bom) {
blob = auto_bom(blob);
}
// First try a.download, then web filesystem, then object URLs
var
filesaver = this
, type = blob.type
, force = type === force_saveable_type
, object_url
, dispatch_all = function() {
dispatch(filesaver, "writestart progress write writeend".split(" "));
}
// on any filesys errors revert to saving with object URLs
, fs_error = function() {
if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
// Safari doesn't allow downloading of blob urls
var reader = new FileReader();
reader.onloadend = function() {
var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
var popup = view.open(url, '_blank');
if(!popup) view.location.href = url;
url=undefined; // release reference before dispatching
filesaver.readyState = filesaver.DONE;
dispatch_all();
};
reader.readAsDataURL(blob);
filesaver.readyState = filesaver.INIT;
return;
}
// don't create more object URLs than needed
if (!object_url) {
object_url = get_URL().createObjectURL(blob);
}
if (force) {
view.location.href = object_url;
} else {
var opened = view.open(object_url, "_blank");
if (!opened) {
// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
view.location.href = object_url;
}
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
}
;
filesaver.readyState = filesaver.INIT;
if (can_use_save_link) {
object_url = get_URL().createObjectURL(blob);
setTimeout(function() {
save_link.href = object_url;
save_link.download = name;
click(save_link);
dispatch_all();
revoke(object_url);
filesaver.readyState = filesaver.DONE;
});
return;
}
fs_error();
}
, FS_proto = FileSaver.prototype
, saveAs = function(blob, name, no_auto_bom) {
return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
}
;
// IE 10+ (native saveAs)
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
return function(blob, name, no_auto_bom) {
name = name || blob.name || "download";
if (!no_auto_bom) {
blob = auto_bom(blob);
}
return navigator.msSaveOrOpenBlob(blob, name);
};
}
FS_proto.abort = function(){};
FS_proto.readyState = FS_proto.INIT = 0;
FS_proto.WRITING = 1;
FS_proto.DONE = 2;
FS_proto.error =
FS_proto.onwritestart =
FS_proto.onprogress =
FS_proto.onwrite =
FS_proto.onabort =
FS_proto.onerror =
FS_proto.onwriteend =
null;
return saveAs;
}(
typeof self !== "undefined" && self
|| typeof window !== "undefined" && window
|| this.content
));
// `self` is undefined in Firefox for Android content script context
// while `this` is nsIContentFrameMessageManager
// with an attribute `content` that corresponds to the window
if (typeof module !== "undefined" && module.exports) {
module.exports.saveAs = saveAs;
} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {
define("FileSaver.js", function() {
return saveAs;
});
}
Tiled 编辑地形后 输出简化相关推荐
- 完美解决 unbuntu中vim编辑完成后 按ESC毫无反映
按ESC退出编辑模式: 再同时按 shift键和:键 就可以出现: 如果你按shift键+:没有反映,需要将输入法切换成英文输入法 在:后输入以下vim退出命令就可以了 命令 简单说明 :w 保存编辑 ...
- 按照字母排序快速排序c语言,从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出...
从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出 RE:songgenius: 从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出. #include #include #inclu ...
- 关于poi读取word文档修改后输出乱码问题 poi word 乱码
java用poi读取word文档的确很容易.不过不同版本之间差别还是挺大的.目前只是试出了poi-3.8-beta4这个版本编辑word内容后输出不是乱码.最新官方版本都是乱码,不知道为什么.贴出代码 ...
- 字符串分隔 -连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。...
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输 ...
- 【Microsoft Word】编辑文字后,图片位置混乱的解决方法
[Microsoft Word]编辑文字后,图片位置混乱的解决方法 参考文章: (1)[Microsoft Word]编辑文字后,图片位置混乱的解决方法 (2)https://www.cnblogs. ...
- java读取InputStream输入流后输出String字符串
为什么80%的码农都做不了架构师?>>> 功能:例子中输出字符编码为GBK,输入流保护 50KB,读取InputStream输入流后输出String字符串. private s ...
- 使用C语言将一个数组首尾互换后输出,函数实现体会地址传递
将一个数组首尾互换后输出,函数实现体会地址传递 小伙伴多多支持,有意见进行评论!(づ ̄3 ̄)づ╭❤- 运行结果: #include<stdio.h> #define N 6 void co ...
- linux网络保存退出,linux编辑文件后如何保存退出
linux编辑文件后如何保存退出? 命令是wq 保存并退出. 首先按ESC进入Command模式,然后输入":wq",回车就可以保存并退出了. 推荐:<Linux教程> ...
- java面试题35 给定以下JAVA代码,这段代码运行后输出的结果是()
java面试题35 给定以下JAVA代码,这段代码运行后输出的结果是() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
最新文章
- BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏
- 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通
- loadrunner基础知识问答(转)
- CONTEST199 [有奖]洛谷8月月赛题解
- Spring Cloud 第一天课堂笔记
- Airflow 中文文档:Lineage
- boost的编译和使用(window下)
- unbantu安装 mysql --- 百度云
- 【图像分割】基于matlab FCM侧扫声呐图像分割【含Matlab源码 1478期】
- DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2019年/2020年
- Cisco交换机下载IOS
- Minecraft forge服务端安装
- 联想计算机拆机,一拆到底~联想昭阳E46L彻底拆解,163P!
- nu.xom:Element
- Lattice FPGA ---IP应用总结之“edp”
- django搭建个人博客(一)
- 2021-01-20
- Linux-搭建web服务器
- 液位系统c语言程序,基于STM32的液位控制系统设计
- form表单中的 action=./? 是什么意思