做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 编辑地形后 输出简化相关推荐

  1. 完美解决 unbuntu中vim编辑完成后 按ESC毫无反映

    按ESC退出编辑模式: 再同时按 shift键和:键 就可以出现: 如果你按shift键+:没有反映,需要将输入法切换成英文输入法 在:后输入以下vim退出命令就可以了 命令 简单说明 :w 保存编辑 ...

  2. 按照字母排序快速排序c语言,从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出...

    从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出 RE:songgenius: 从键盘输入十个国家的名称,用选择排序法按字母顺序排列后输出. #include #include #inclu ...

  3. 关于poi读取word文档修改后输出乱码问题 poi word 乱码

    java用poi读取word文档的确很容易.不过不同版本之间差别还是挺大的.目前只是试出了poi-3.8-beta4这个版本编辑word内容后输出不是乱码.最新官方版本都是乱码,不知道为什么.贴出代码 ...

  4. 字符串分隔 -连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。...

    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输 ...

  5. 【Microsoft Word】编辑文字后,图片位置混乱的解决方法

    [Microsoft Word]编辑文字后,图片位置混乱的解决方法 参考文章: (1)[Microsoft Word]编辑文字后,图片位置混乱的解决方法 (2)https://www.cnblogs. ...

  6. java读取InputStream输入流后输出String字符串

    为什么80%的码农都做不了架构师?>>>    功能:例子中输出字符编码为GBK,输入流保护 50KB,读取InputStream输入流后输出String字符串. private s ...

  7. 使用C语言将一个数组首尾互换后输出,函数实现体会地址传递

    将一个数组首尾互换后输出,函数实现体会地址传递 小伙伴多多支持,有意见进行评论!(づ ̄3 ̄)づ╭❤- 运行结果: #include<stdio.h> #define N 6 void co ...

  8. linux网络保存退出,linux编辑文件后如何保存退出

    linux编辑文件后如何保存退出? 命令是wq 保存并退出. 首先按ESC进入Command模式,然后输入":wq",回车就可以保存并退出了. 推荐:<Linux教程> ...

  9. 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 ...

最新文章

  1. BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏
  2. 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通
  3. loadrunner基础知识问答(转)
  4. CONTEST199 [有奖]洛谷8月月赛题解
  5. Spring Cloud 第一天课堂笔记
  6. Airflow 中文文档:Lineage
  7. boost的编译和使用(window下)
  8. unbantu安装 mysql --- 百度云
  9. 【图像分割】基于matlab FCM侧扫声呐图像分割【含Matlab源码 1478期】
  10. DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2019年/2020年
  11. Cisco交换机下载IOS
  12. Minecraft forge服务端安装
  13. 联想计算机拆机,一拆到底~联想昭阳E46L彻底拆解,163P!
  14. nu.xom:Element
  15. Lattice FPGA ---IP应用总结之“edp”
  16. django搭建个人博客(一)
  17. 2021-01-20
  18. Linux-搭建web服务器
  19. 液位系统c语言程序,基于STM32的液位控制系统设计
  20. form表单中的 action=./? 是什么意思

热门文章

  1. docker查看mysql镜像版本_Docker 查看镜像信息
  2. MATLAB数学建模 回归与内插
  3. 运营版uniapp多商户商城小程序+H5+APP+商家入驻短视频社区种草直播阶梯拼团
  4. 什么是虚拟机,有什么用?
  5. 【收藏夹2020-2021】
  6. Java中JDBC详解
  7. Flutter 发布iOS版本app
  8. 树莓派写卡后连接诸多问题及方法
  9. Mysql数据处理,按照半小时汇总数据,
  10. 攻防世界 转轮机加密