注册会员 登录
Project1 返回首页

汪汪的个人空间 https://rpg.blue/?171386 [收藏] [复制] [分享] [RSS]

日志

【胡编】保存数据(对象,图片) 0.3 版

已有 257 次阅读2015-12-27 21:13 |个人分类:脚本·修改·整合·胡编

//=============================================================================
// 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;
}

})();

鸡蛋

鲜花

评论 (0 个评论)

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 05:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部