node 将Spine 的 json数据转成 3.7版本, dragbones中可以查看的格式

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)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值