var fs = require("fs")
//输入的spine json路径
var inputSpineJson = "E:/代码/Tools/spine/01.json";
//导出spine的json路径
var outputSpineJson = "E:/代码/Tools/spine/02/01.json";
if(!fs.existsSync(inputSpineJson))
{
console.log("输入文件不存在");
return;
}
var jsonStr = fs.readFileSync(inputSpineJson);
var fromJson = JSON.parse(jsonStr);
var skins = fromJson.skins;
if(skins instanceof Array)
{
let newSkins = {};
for(let i=0;i<skins.length; i++)
{
let attach = skins[i];
if(attach.attachments)
{
newSkins[attach.name] = attach.attachments;
}
}
fromJson.skins = newSkins;
}
//转换
rollbackCurves(fromJson, fromJson.animations, undefined);
/**Spine转换龙骨的数据 */
function rollbackCurves(jsonObj, paramJsonValue, jsonName) {
if (paramJsonValue == null)
return;
if (jsonObj instanceof Array) {
if (paramJsonValue.time == undefined)
paramJsonValue.time = 0.0;
if (jsonName != undefined)
if (jsonName == "rotate" && paramJsonValue.angle == undefined) {
paramJsonValue.angle= 0.0;
} else if (jsonName == "scale") {
if (paramJsonValue.x == undefined)
paramJsonValue.x = 1.0;
if (paramJsonValue.y == undefined)
paramJsonValue.y = 1.0;
}
}
let jsonValue = paramJsonValue.curve;
if (jsonValue == null && typeof paramJsonValue == "object") {
let ppkey;
for(let pkey in jsonObj)
{
if(jsonObj[pkey] == paramJsonValue)
{
ppkey = pkey;
break;
}
}
for (let key in paramJsonValue)
rollbackCurves(paramJsonValue, paramJsonValue[key], ppkey);
return;
}
if (typeof jsonValue == "number") {
jsonValue = [jsonValue];
jsonValue.push(paramJsonValue.c2!=undefined?paramJsonValue.c2:0.0);
jsonValue.push(paramJsonValue.c3!=undefined?paramJsonValue.c3:1.0);
jsonValue.push(paramJsonValue.c4!=undefined?paramJsonValue.c4:1.0);
delete paramJsonValue["c2"];
delete paramJsonValue["c3"];
delete paramJsonValue["c4"];
paramJsonValue.curve = jsonValue;
}
}
fs.writeFileSync(outputSpineJson, JSON.stringify(fromJson));
console.log("写入完成"+outputSpineJson)