查看: 8942|回复: 19

[原创发布] 本地保存数据 图片 按键截图 的一些方法..

[复制链接]
梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-11-22 21:20:40 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 汪汪 于 2016-1-6 14:43 编辑

储存点  数据图片什么的..

[fold=0.3版,修复菜单截图
添加网络支持?
未测试,求手机验证...]
[pre lang="JavaScript" file="ww_baocun.js"]//=============================================================================
// ww_BaoCun.js
//=============================================================================
/*:
* @plugindesc baocun保存
* @author wangwang
*
* @param 版本
* @desc 0.3
* @default 0.3
*
* @param path_name
* @desc 默认保存文件夹的名称
* @default chucun
*
* @param data_name
* @desc 默认保存数据的文件名称
* @default data.txt
*
* @param json_name
* @desc 默认保存对象的文件名称
* @default jsonsj.json
*
* @param png_name
* @desc 默认保存图片的文件名称
* @default tupian.png
*
* @param jietu
* @desc 截图按键 117 是 F6 ,如果不填,则无截图功能
* @default 117
*
* @help
* 版本: 0.3
* 更新菜单截图修正
* 添加网络支持?
*
* 截图 F6(默认)
* ww_BaoCun.SaveData(data,name,dirPath)  保存数据
* ww_BaoCun.LoadData(name,dirPath)   读取数据
* ww_BaoCun.SaveJson(json,name,dirPath)  保存对象
* ww_BaoCun.LoadJson(name,dirPath)  读取对象
* ww_BaoCun.SavePng(bitmap,name,dirPath)    保存图片(bitmap) 为png格式
*    特殊例子: ww_BaoCun.SavePng(ww_BaoCun.Bitmap_snap(SceneManager._scene),"jietu.png") 截图保存
* ww_BaoCun.SaveDataURLtoPng(dataurl,name,dirPath)    保存DataURL到png
*/


(function() {

        ww_BaoCun = {}
       
        ww_BaoCun.jieTuKey = parseInt(PluginManager.parameters("ww_BaoCun")["jietu"], 10);
        ww_BaoCun.path_name = PluginManager.parameters("ww_BaoCun")["path_name"];
        ww_BaoCun.data_name = PluginManager.parameters("ww_BaoCun")["data_name"];
        ww_BaoCun.png_name = PluginManager.parameters("ww_BaoCun")["png_name"];
        ww_BaoCun.json_name = PluginManager.parameters("ww_BaoCun")["json_name"];
        ww_BaoCun._loadListeners = []
        ww_BaoCun._loadinput = document.createElement("input");
            ww_BaoCun._loadinput.type ="file"
            ww_BaoCun._loadinput.style.zIndex = 12;
            ww_BaoCun._loadinput.style.position = 'absolute';
          ww_BaoCun._loadinput.style.margin = 'auto';

        ww_BaoCun._SceneManager_onKeyDown = SceneManager.onKeyDown
       
        SceneManager.onKeyDown = function(event) {
                if (!isNaN(ww_BaoCun.jieTuKey) && !event.ctrlKey && !event.altKey) {
                        if (event.keyCode == ww_BaoCun.jieTuKey) { // 117 = F6
                                if (Utils.isNwjs()) {
                                        if (SceneManager._scene) {
                                                ww_BaoCun.SavePng(ww_BaoCun.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
                                        };
                                }
                        }
                }
                ww_BaoCun._SceneManager_onKeyDown.call(this, event)
        };


        ww_BaoCun.istype =function () {
                return StorageManager.isLocalMode()
        }


        //保存数据(数据,文件名,文件夹名)
        ww_BaoCun.SaveData = function(data, name, wzname) {
                //如果 是本地模式
                if (this.istype()){
                        ww_BaoCun.SaveData2(data, name, wzname)
                }else{
                        ww_BaoCun.SaveData1(data, name)
                }
        };

        //保存对象 (对象,文件名,文件夹名)
        ww_BaoCun.SaveJson = function(json, name, wzname) {
                if (this.istype()){
                        ww_BaoCun.SaveJson2(json, name, wzname)
                }else{
                        ww_BaoCun.SaveJson1(json, name)
                }
       
        };


        //读取数据
        ww_BaoCun.LoadData2 = function() {
                this._loadinput.onchange=function () {
                        ww_BaoCun.loadingData()
                }
                document.body.appendChild(this._loadinput);
        }

        ww_BaoCun.LoadJson2 = function() {
               
                this._loadinput.onchange=function () {
                        ww_BaoCun.loadingJson()
                }
                document.body.appendChild(this._loadinput);
        }


        ww_BaoCun.loadingData = function() {
                var file = this._loadinput.files[0];
            var reader = new FileReader();
                    //将文件以文本形式读入页面
                reader.readAsText(file);
                this._loadinput.remove()
                reader.onload=function(f){
                    ww_BaoCun._data =  this.result;
                    ww_BaoCun.loaded()
                
                }
        }


        ww_BaoCun.loadingJson = function() {
            var file = this._loadinput.files[0];
            var reader = new FileReader();
            //将文件以文本形式读入页面
            reader.readAsText(file);
                this._loadinput.remove()
            reader.onload=function(f){
                ww_BaoCun._json =JSON.parse(this.result)
                ww_BaoCun.loaded()
        }       
        }
       
       
        ww_BaoCun.loaded = function() {
                while (this._loadListeners.length > 0) {
                var listener = this._loadListeners.shift();
                listener();
            }
        }

       

        //保存DataURL到png格式(数据,文件名,文件夹名)
        ww_BaoCun.SaveDataURL2png= function(dataURL, name, wzname) {
                if (this.istype()){
                        ww_BaoCun.SaveDataURL2png2(dataURL, name, wzname)
                }else{
                        ww_BaoCun.SaveDataURL2png1(dataURL, name)
                }
        }

        //保存图片到png格式(图片,文件名,文件夹名)
        ww_BaoCun.SavePng = function(bitmap, name, wzname) {
                if (this.istype()){
                        ww_BaoCun.SavePng2(bitmap, name, wzname)
                }else{
                        ww_BaoCun.SavePng1(bitmap, name)
                }
        }



        ww_BaoCun.SaveData1 = function(data, name) {
                var name = name || this.data_name || 'data.txt';
                /**
                 * 在本地进行文件保存
                 * @param  {String} data     要保存到本地的数据
                 * @param  {String} filename 文件名
                 */
                var saveFile = function(data, filename){
                        var urlObject = window.URL || window.webkitURL || window;
                        var export_blob = new Blob([data]);
                        var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
                        save_link.href = urlObject.createObjectURL(export_blob);
                        save_link.download = filename;
                    var event = document.createEvent('MouseEvents');
                    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    save_link.dispatchEvent(event);
                };
                // download
                saveFile(data,name);
                return data;
        }

        //保存对象 (对象,文件名,文件夹名)
        ww_BaoCun.SaveJson1 = function(json, name) {
                var name = name || this.json_name || 'jsonsj.json';
                var data = JSON.stringify(json);
                /**
                 * 在本地进行文件保存
                 * @param  {String} data     要保存到本地的数据
                 * @param  {String} filename 文件名
                 */
                var saveFile = function(data, filename){
                        var urlObject = window.URL || window.webkitURL || window;
                        var export_blob = new Blob([data]);
                        var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
                        save_link.href = urlObject.createObjectURL(export_blob);
                        save_link.download = filename;
                    var event = document.createEvent('MouseEvents');
                    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    save_link.dispatchEvent(event);
                };
                // download
                saveFile(data,name);
                return data;
        };


        ww_BaoCun.SavePng1 = function(bitmap, name) {
                var name = name || this.png_name || 'tupian.png';
                var type = 'png';
                var imgData = bitmap.canvas.toDataURL(type);
                /**
                 * 获取mimeType
                 * @param  {String} type the old mime-type
                 * @return the new mime-type
                 */
                var _fixType = function(type) {
                    type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                    var r = type.match(/png|jpeg|bmp|gif/)[0];
                    return 'image/' + r;
                };
                // 加工image data,替换mime type
                imgData = imgData.replace(_fixType(type),'image/octet-stream');

                /**
                 * 在本地进行文件保存
                 * @param  {String} data     要保存到本地的图片数据
                 * @param  {String} filename 文件名
                 */
                var saveFile = function(data, filename){
                    var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                    save_link.href = data;
                    save_link.download = filename;
                    
                    var event = document.createEvent('MouseEvents');
                    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    save_link.dispatchEvent(event);
                };
                // 下载后的文件名
                var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
                // download
                saveFile(imgData,filename);
                return imgData;
        }



       
        //保存DataURL到png格式(数据,文件名,文件夹名)
        ww_BaoCun.SaveDataURL2png1 = function(dataURL, name, wzname) {
                var name = name || this.png_name || 'tupian.png';
                var type = 'png';
                if (!dataURL) {
                        return dataURL
                };
                var imgData = dataURL;
                /**
                 * 获取mimeType
                 * @param  {String} type the old mime-type
                 * @return the new mime-type
                 */
                var _fixType = function(type) {
                    type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                    var r = type.match(/png|jpeg|bmp|gif/)[0];
                    return 'image/' + r;
                };
                // 加工image data,替换mime type
                imgData = imgData.replace(_fixType(type),'image/octet-stream');
                /**
                 * 在本地进行文件保存
                 * @param  {String} data     要保存到本地的图片数据
                 * @param  {String} filename 文件名
                 */
                var saveFile = function(data, filename){
                    var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                    save_link.href = data;
                    save_link.download = filename;
                    
                    var event = document.createEvent('MouseEvents');
                    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    save_link.dispatchEvent(event);
                };
                // 下载后的文件名
                var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
                // download
                saveFile(imgData,filename);
                return imgData;
        }


        //文件夹位置
        ww_BaoCun.dirPath = function(name) {
                var weizhi_name = name || this.path_name || 'chucun';
                var weizhi = '/' + weizhi_name + '/';
                var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/, weizhi);
                if (path.match(/^\/([A-Z]\:)/)) {
                        path = path.slice(1);
                }
                var dirpath = decodeURIComponent(path);

                var fs = require('fs');
                if (!fs.existsSync(dirpath)) {
                        fs.mkdirSync(dirpath);
                }
                return dirpath;
        }

        //保存数据(数据,文件名,文件夹名)
        ww_BaoCun.SaveData2 = function(data, name, wzname) {
                var name = name || this.data_name || 'data.txt';
                var filePath = this.dirPath(wzname) + name;
                var fs = require('fs');
                fs.writeFileSync(filePath, data);
                return data;
        };

        //保存对象 (对象,文件名,文件夹名)
        ww_BaoCun.SaveJson2 = function(json, name, wzname) {
                var name = name || this.json_name || 'jsonsj.json';
                var data = JSON.stringify(json);
                var filePath = this.dirPath(wzname) + name;
                var fs = require('fs');
                fs.writeFileSync(filePath, data);
                return data;
        };



        //保存DataURL到png格式(数据,文件名,文件夹名)
        ww_BaoCun.SaveDataURL2png2 = function(dataURL, name, wzname) {
                var name = name || this.png_name || 'tupian.png';
                if (!dataURL) {
                        return dataURL
                };
                var imgData = dataURL;
                var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
                var dataBuffer = new Buffer(base64Data, 'base64');
                var filePath = dirPath(wzname) + name;
                var fs = require("fs");
                fs.writeFile(filePath, dataBuffer, function(err) {
                        if (err) {
                                return false;
                        } else {
                                return true;
                        }
                });
                return imgData;
        }

        //保存图片到png格式(图片,文件名,文件夹名)
        ww_BaoCun.SavePng2 = function(bitmap, name, wzname) {
                var name = name || this.png_name || 'tupian.png';
                if (!bitmap || !bitmap.canvas) {
                        return bitmap
                };
                var imgData = bitmap.canvas.toDataURL();
                var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
                var dataBuffer = new Buffer(base64Data, 'base64');
                var filePath = this.dirPath(wzname) + name;

                var fs = require("fs");
                fs.writeFile(filePath, dataBuffer, function(err) {
                        if (err) {
                                return false;
                        } else {
                                return true;
                        }
                });
                return imgData;
        }



        //读取数据 (文件名,文件夹名)
        ww_BaoCun.LoadData = function(name, wzname) {
                var name = name || 'data.txt';
                var filePath = this.dirPath(wzname) + name;
                var fs = require('fs');
                if (fs.existsSync(filePath)) {
                        data = fs.readFileSync(filePath, {
                                encoding: 'utf8'
                        });
                };
                return data;
        }
       
       
        //读取对象 (文件名,文件夹名)
        ww_BaoCun.LoadJson = function(name, wzname) {
                var name = name || 'jsonsj.json';
                var filePath = this.dirPath(wzname) + name;
                var fs = require('fs');
                if (fs.existsSync(filePath)) {
                        json = fs.readFileSync(filePath, {
                                encoding: 'utf8'
                        });
                        data = json ? JSON.parse(json) : json;
                };
                return data;
        }


       
        ww_BaoCun.Snap = function() {
                return this.SavePng(this.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
        }


       
        ww_BaoCun.Bitmap_snap = function(stage) {
                var width = Graphics.width;
                var height = Graphics.height;
                var bitmap = new Bitmap(width, height);
                var context = bitmap._context;
            var canvas = document.createElement('canvas');
            var options = { view: canvas };
            var renderTexture = new PIXI.CanvasRenderer(width, height, options);
            if (stage) {
                renderTexture.render(stage);
                stage.worldTransform.identity();
            }
                context.drawImage(canvas, 0, 0);
                bitmap._setDirty();
                return bitmap;
        };


        //无用产物...
        ww_BaoCun.getHouZhui = function() {
                var myDate = new Date();
                var ye = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
                var mo = myDate.getMonth(); //获取当前月份(0-11,0代表1月)
                var d = myDate.getDate(); //获取当前日(1-31)
                var h = myDate.getHours(); //获取当前小时数(0-23)
                var m = myDate.getMinutes(); //获取当前分钟数(0-59)
                var s = myDate.getSeconds(); //获取当前秒数(0-59)
                var ms = myDate.getMilliseconds(); //获取当前毫秒数(0-999)

                var houzhui = '';
                if (arguments[0]) {
                        houzhui += ye + '-' + (mo + 1) + '-' + d + '-' + h + '-' + m + '-' + s + '-' + ms;
                } else {
                        houzhui += ye + '' + (mo + 1) + '' + d + '' + h + '' + m + '' + s + '' + ms;
                };
                return houzhui;
        }

})();[/pre]


[/fold]

[fold=0.2版
功能: 保存读取  数据或对象, 保存图片. 一键截图 (F6) (在菜单截图还有点问题....)
]
[pre lang="JavaScript" file="ww_baocun.js"]//=============================================================================
// ww_BaoCun.js
//=============================================================================
/*:
* @plugindesc baocun保存
* @author wangwang
*
* @param 版本
* @desc 0.2
* @default 0.2
*
* @param path_name
* @desc 默认保存文件夹的名称
* @default chucun
*
* @param data_name
* @desc 默认保存数据的文件名称
* @default data.txt
*
* @param json_name
* @desc 默认保存对象的文件名称
* @default jsonsj.json
*
* @param png_name
* @desc 默认保存图片的文件名称
* @default tupian.png
*
* @param jietu
* @desc 截图按键 117 是 F6 ,如果不填,则无截图功能
* @default 117
*
* @help
* 版本: 0.2
*
* 大概就是自己做游戏测试时用的...
*
* 截图 F6(默认)
* ww_BaoCun.SaveData(data,name,dirPath)  保存数据
* ww_BaoCun.LoadData(name,dirPath)   读取数据
* ww_BaoCun.SaveJson(json,name,dirPath)  保存对象
* ww_BaoCun.LoadJson(name,dirPath)  读取对象
* ww_BaoCun.SavePng(bitmap,name,dirPath)    保存图片(bitmap) 为png格式
*    特殊例子: ww_BaoCun.SavePng(ww_BaoCun.Bitmap_snap(SceneManager._scene),"jietu.png") 截图保存
* ww_BaoCun.SaveDataURLtoPng(dataurl,name,dirPath)    保存DataURL到png
*/


(function() {

        ww_BaoCun = {}

        ww_BaoCun.jieTuKey = parseInt(PluginManager.parameters("ww_BaoCun")["jietu"], 10);
        ww_BaoCun.path_name = PluginManager.parameters("ww_BaoCun")["path_name"];
        ww_BaoCun.data_name = PluginManager.parameters("ww_BaoCun")["data_name"];
        ww_BaoCun.png_name = PluginManager.parameters("ww_BaoCun")["png_name"];
        ww_BaoCun.json_name = PluginManager.parameters("ww_BaoCun")["json_name"];


        ww_BaoCun._SceneManager_onKeyDown = SceneManager.onKeyDown
        SceneManager.onKeyDown = function(event) {
                if (!isNaN(ww_BaoCun.jieTuKey) && !event.ctrlKey && !event.altKey) {
                        if (event.keyCode == ww_BaoCun.jieTuKey) { // 117 = F6
                                if (Utils.isNwjs()) {
                                        if (SceneManager._scene) {
                                                ww_BaoCun.save_png(ww_BaoCun.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
                                        };
                                }
                        }
                }
                ww_BaoCun._SceneManager_onKeyDown.call(this, event)

        };

        //文件夹位置
        ww_BaoCun.dirPath = function(name) {

                var weizhi_name = name || this.path_name || 'chucun';
                var weizhi = '/' + weizhi_name + '/';

                var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/, weizhi);
                if (path.match(/^\/([A-Z]\:)/)) {
                        path = path.slice(1);
                }
                var dirpath = decodeURIComponent(path);

                var fs = require('fs');
                if (!fs.existsSync(dirpath)) {
                        fs.mkdirSync(dirpath);
                }

                return dirpath;
        }


        //保存数据(数据,文件名,文件夹名)
        ww_BaoCun.SaveData = function(data, name, wzname) {

                var name = name || this.data_name || 'data.txt';

                var filePath = this.dirPath(wzname) + name;

                var fs = require('fs');
                fs.writeFileSync(filePath, data);

                return data;
        };

        //保存对象 (对象,文件名,文件夹名)
        ww_BaoCun.SaveJson = function(json, name, wzname) {


                var name = name || this.json_name || 'jsonsj.json';

                var data = JSON.stringify(json);

                var filePath = this.dirPath(wzname) + name;

                var fs = require('fs');
                fs.writeFileSync(filePath, data);

                return data;
        };

        //保存DataURL到png格式(数据,文件名,文件夹名)
        ww_BaoCun.SaveDataURL2png = function(dataURL, name, wzname) {

                var name = name || this.png_name || 'tupian.png';

                if (!dataURL) {
                        return dataURL
                };

                var imgData = dataURL;
                var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
                var dataBuffer = new Buffer(base64Data, 'base64');

                var filePath = dirPath(wzname) + name;

                var fs = require("fs");
                fs.writeFile(filePath, dataBuffer, function(err) {
                        if (err) {
                                return false;
                        } else {
                                return true;
                        }
                });

                return imgData;
        }

        //保存图片到png格式(图片,文件名,文件夹名)
        ww_BaoCun.SavePng = function(bitmap, name, wzname, hz) {

                var name = name || this.png_name || 'tupian.png';
                if (!bitmap || !bitmap.canvas) {
                        return bitmap
                };

                var imgData = bitmap.canvas.toDataURL();
                var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
                var dataBuffer = new Buffer(base64Data, 'base64');

                var filePath = this.dirPath(wzname) + name;

                var fs = require("fs");
                fs.writeFile(filePath, dataBuffer, function(err) {
                        if (err) {
                                return false;
                        } else {
                                return true;
                        }
                });

                return imgData;
        }


        //读取数据 (文件名,文件夹名)
        ww_BaoCun.LoadData = function(name, wzname) {
                var name = name || 'data.txt';

                var filePath = this.dirPath(wzname) + name;

                var fs = require('fs');
                if (fs.existsSync(filePath)) {
                        data = fs.readFileSync(filePath, {
                                encoding: 'utf8'
                        });
                };

                return data;
        }

        //读取对象 (文件名,文件夹名)
        ww_BaoCun.LoadJson = function(name, wzname) {
                var name = name || 'jsonsj.json';


                var filePath = this.dirPath(wzname) + name;

                var fs = require('fs');
                if (fs.existsSync(filePath)) {
                        json = fs.readFileSync(filePath, {
                                encoding: 'utf8'
                        });
                        data = json ? JSON.parse(json) : json;
                };

                return data;
        }



        ww_BaoCun.Snap = function() {
                return this.SavePng(this.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
        }



        ww_BaoCun.Bitmap_snap = function(stage) {
                var width = Graphics.width;
                var height = Graphics.height;
                var bitmap = new Bitmap(width, height);
                var context = bitmap._context;
                var renderTexture = new PIXI.RenderTexture(width, height);
                if (stage) {
                        renderTexture.render(stage);
                        stage.worldTransform.identity();
                }
                if (Graphics.isWebGL()) {
                        var gl = renderTexture.renderer.gl;
                        var webGLPixels = new Uint8Array(4 * width * height);
                        gl.bindFramebuffer(gl.FRAMEBUFFER, renderTexture.textureBuffer.frameBuffer);
                        gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, webGLPixels);
                        gl.bindFramebuffer(gl.FRAMEBUFFER, null);
                        var canvasData = context.getImageData(0, 0, width, height);
                        canvasData.data.set(webGLPixels);
                        context.putImageData(canvasData, 0, 0);
                } else {
                        context.drawImage(renderTexture.textureBuffer.canvas, 0, 0);
                }
                return bitmap;
        };


        //无用产物...
        ww_BaoCun.getHouZhui = function() {
                var myDate = new Date();
                var ye = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
                var mo = myDate.getMonth(); //获取当前月份(0-11,0代表1月)
                var d = myDate.getDate(); //获取当前日(1-31)
                var h = myDate.getHours(); //获取当前小时数(0-23)
                var m = myDate.getMinutes(); //获取当前分钟数(0-59)
                var s = myDate.getSeconds(); //获取当前秒数(0-59)
                var ms = myDate.getMilliseconds(); //获取当前毫秒数(0-999)

                var houzhui = '';
                if (arguments[0]) {
                        houzhui += ye + '-' + (mo + 1) + '-' + d + '-' + h + '-' + m + '-' + s + '-' + ms;
                } else {
                        houzhui += ye + '' + (mo + 1) + '' + d + '' + h + '' + m + '' + s + '' + ms;
                };
                return houzhui;
        }

})();
[/pre]

[/fold]

BaiduShurufa_2015-11-23_13-6-35.png
[fold=点开看截图效果   (菜单截图........有点问题)]
jietu20151123123219489.png
菜单截图........有点问题
jietu20151123123223785.png
jietu20151123123342524.png
jietu20151123125331245.png
[/fold]

[fold=0.1版
功能: 保存读取  数据或对象, 保存图片.
]

[pre lang="JavaScript" file="ww_baocun.js"]//=============================================================================
// ww_baocun.js
//=============================================================================
/*:
* @plugindesc baocun保存
* @author wangwang
*
* @param 版本
* @desc 0.1
* @default 0.1
*
* @param path_name
* @desc 默认保存文件夹的名称
* @default chucun
*
* @param data_name
* @desc 默认保存数据的文件名称
* @default data.txt
*
* @param json_name
* @desc 默认保存对象的文件名称
* @default jsonsj.json
*
* @param png_name
* @desc 默认保存图片的文件名称
* @default tupian.png
*
*
* @help
* 版本: 0.1
*
* 大概就是自己做游戏测试时用的...
* save_data(data,name,dirPath)  保存数据
* load_data(name,dirPath)   读取数据
* save_json(json,name,dirPath)  保存对象
* load_json(name,dirPath)  读取对象
* save_png(bitmap,name,dirPath)    保存图片(bitmap) 为png格式
*    特殊例子: save_png(Bitmap.snap(SceneManager._scene),"jietu.png") 截图保存
* save_dataURL2png(dataurl,name,dirPath)    保存DataURL到png
*/

(function() {


//文件夹位置
dir_path = function (name) {
        
        var path_name = PluginManager.parameters("ww_baocun")["path_name"];
        var weizhi_name =   name ||  path_name  || 'chucun' ;
        
    var weizhi ='/'+weizhi_name+'/';
        
    var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/,weizhi);
    if (path.match(/^\/([A-Z]\:)/)) {
        path = path.slice(1);
    }
    var dirpath = decodeURIComponent(path);

    var fs = require('fs');
    if (!fs.existsSync(dirpath)) {
        fs.mkdirSync(dirpath);
    }
   
    return dirpath;
}


//保存数据(数据,文件名,文件夹名)
save_data = function(data,name, wzname) {
        
    var data_name = PluginManager.parameters("ww_baocun")["data_name"];
        var name=name ||  data_name   || 'data.txt';
        
    var filePath =dir_path(wzname)  + name ;
   
    var fs = require('fs');
    fs.writeFileSync(filePath, data);
    return data;
};

//保存对象 (对象,文件名,文件夹名)
save_json = function(json,name, wzname) {
        
        var json_name = PluginManager.parameters("ww_baocun")["json_name"];
        var name = name ||  json_name   || 'jsonsj.json';
        
        var data =JSON.stringify(json) ;
        
    var filePath = dir_path(wzname) + name ;
        
    var fs = require('fs');
    fs.writeFileSync(filePath,data);
    return data;
};

//保存DataURL到png格式(数据,文件名,文件夹名)
save_dataURL2png = function (dataURL,name,wzname) {
        
        var png_name = PluginManager.parameters("ww_baocun")["png_name"];
        var name = name ||  png_name   || 'tupian.png';

    if (!dataURL){return dataURL};
   
    var imgData = dataURL;
    var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
    var dataBuffer = new Buffer(base64Data, 'base64');
   
    var filePath = dir_path(wzname) + name ;
   
        var fs = require("fs");   
    fs.writeFile(filePath, dataBuffer ,  function(err) {
        if(err){
          return false;
        }else{
          return true;
        }
    });
    return imgData;
}

//保存图片到png格式(图片,文件名,文件夹名)
save_png =function (bitmap,name,wzname,hz) {
        var png_name = PluginManager.parameters("ww_baocun")["png_name"];
        var name = name ||  png_name   || 'tupian.png';
        
        if (!bitmap || !bitmap.canvas){return bitmap};
        
    var imgData = bitmap.canvas.toDataURL();
    var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
    var dataBuffer = new Buffer(base64Data, 'base64');
   
    var filePath = dir_path(wzname) + name ;
   
        var fs = require("fs");   
    fs.writeFile(filePath, dataBuffer ,  function(err) {
        if(err){
          return false;
        }else{
          return true;
        }
    });
    return imgData;
}


//读取数据 (文件名,文件夹名)
load_data =function (name,wzname) {
        var name= name || 'data.txt';
        
    var filePath = dir_path(wzname) + name;

    var fs = require('fs');
    if (fs.existsSync(filePath)) {
        data = fs.readFileSync(filePath, { encoding: 'utf8' });
    }
   
        return data;
}

//读取对象 (文件名,文件夹名)
load_json =function (name,wzname) {
        var name= name || 'jsonsj.json';
        

    var filePath = dir_path(wzname) + name;

    var fs = require('fs');
    if (fs.existsSync(filePath)) {
        json = fs.readFileSync(filePath, { encoding: 'utf8' });
        data = json ? JSON.parse(json) : json;
    }
   
        return  data;
}


//无用产物...
get_houzhui= function () {
        var myDate = new Date();
        var ye = myDate.getFullYear();    //获取完整的年份(4位,1970-????)
        var mo = myDate.getMonth();       //获取当前月份(0-11,0代表1月)
        var d =myDate.getDate();        //获取当前日(1-31)
        var h =myDate.getHours();       //获取当前小时数(0-23)
        var m =myDate.getMinutes();     //获取当前分钟数(0-59)
        var s =myDate.getSeconds();     //获取当前秒数(0-59)
        var ms =myDate.getMilliseconds();    //获取当前毫秒数(0-999)
        
        var houzhui ='';
        if (arguments[0]){
                houzhui += ye +'-'+ (mo+1)+'-' + d+'-'+ h+'-'+ m+'-'+s+'-'+ ms ;
        }else{
                houzhui += ye +''+ (mo+1)+'' + d+''+ h+''+ m+''+s+''+ ms  ;
        }

        return houzhui;
}


})();

[/pre]

[/fold]
BaiduShurufa_2015-11-22_21-35-9.png
BaiduShurufa_2015-11-22_21-32-48.png
[fold=点开是详细的截图]
BaiduShurufa_2015-11-22_21-33-21.png
BaiduShurufa_2015-11-22_21-34-5.png
jietu.png

[/fold]
  

点评

非面向测试的一键截图?不太明白..这个大概可以在部署到windos上使用  发表于 2015-11-23 13:32
其实我指的是那种并非面向测试的一键截图 而是那种供玩家使用的 比如一些画面精美的游戏 玩家会比较有截图欲望的那种 总之是感谢更新啦  发表于 2015-11-23 13:27
按键截图 (F6)  发表于 2015-11-23 13:02
按键截图吗……额,应该可以实现吧。我试试……  发表于 2015-11-23 11:28
可能做一个类似于“游戏中按键截图”比较有帮助  发表于 2015-11-23 10:51

评分

参与人数 1星屑 +166 梦石 +1 收起 理由
余烬之中 + 166 + 1 积极采纳意见(笑

查看全部评分

梦石
0
星屑
1032
在线时间
145 小时
注册时间
2013-10-16
回帖
254
发表于 2015-11-26 22:01:27 | 显示全部楼层
建议考虑一下手机用户的需求……
另外lz不尝试做个截图存档吗?
开心咸鱼每一天~
回复

使用道具 举报

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
 楼主| 发表于 2015-11-26 23:17:19 | 显示全部楼层
rpg-sheep 发表于 2015-11-26 22:01
建议考虑一下手机用户的需求……
另外lz不尝试做个截图存档吗?


手机的话,可能会涉及到复杂的权限问题吧。。。而且……还不会打包成手机能用的格式,求教打包啊!

点评

同求QwQ  发表于 2015-11-28 21:38
回复

使用道具 举报

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
 楼主| 发表于 2016-1-5 16:39:21 | 显示全部楼层
@夏末渐离  你是说这个吗?
找了很久才找到的一些比较实用的保存读取的办法...

点评

用系统自带的保存就好,我这个是想的保存那些特别大的数据,(系统的那个据说最大5mb)而且是弄到电脑上,比如截图这个,就不用费心费力开截图软件了  发表于 2016-1-5 19:15
我也是用的fs呢,手机端应该不兼容。http://rm.66rpg.com/forum.php?mod=viewthread&tid=386456  发表于 2016-1-5 18:16
突然觉得自己是个伸手党  发表于 2016-1-5 17:33
不想自己找了XD  发表于 2016-1-5 17:31
这个只是基本的方法.....有网络的有本地的,只是比自己现找方便点  发表于 2016-1-5 17:18

评分

参与人数 1星屑 +10 收起 理由
夏末渐离 + 10 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3291
在线时间
350 小时
注册时间
2018-3-28
回帖
189
发表于 2018-9-3 16:20:35 | 显示全部楼层
谢谢大佬  这个很有用

想请问下大佬 这个插件是否能用于商业

点评

没有问题,只要标注下名字即可  发表于 2018-9-3 22:39
用mv做了两款游戏,有兴趣的可以瞧一瞧:
《有毛病》--- 休闲、探索、策略、剧情、恐怖 都有那么一些,就是没有战斗。挺骚挺有意思的一个游戏。
steam链接:点击这里


《留离》--- 探索、高自由度、ARPG、战斗,就是没有啥剧情。
steam链接:点击这里
回复

使用道具 举报

梦石
0
星屑
3291
在线时间
350 小时
注册时间
2018-3-28
回帖
189
发表于 2018-9-3 23:09:24 | 显示全部楼层
谢谢大佬 爱你么么哒~~
用mv做了两款游戏,有兴趣的可以瞧一瞧:
《有毛病》--- 休闲、探索、策略、剧情、恐怖 都有那么一些,就是没有战斗。挺骚挺有意思的一个游戏。
steam链接:点击这里


《留离》--- 探索、高自由度、ARPG、战斗,就是没有啥剧情。
steam链接:点击这里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部