cocos2d-x lua 3.6 解析json

前端之家收集整理的这篇文章主要介绍了cocos2d-x lua 3.6 解析json前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

cocos2d-x lua 解析json


在游戏开发过程中经常使用json文件作为存储本地数据的文件,这里介绍下cocos2d-x lua 3.6中如何使用json文件

思路:

  1. 将json文件当作文本导入到程序中
  2. 通过引擎提供的json库解析json数据文件为table

代码

local str = cc.FileUtils:getInstance():getStringFromFile(config_file_name)
    local data = json.decode(str)
    self.data_ = data
    for k,val in ipairs(data) do
        table.foreach(val,function(i,v) print (i,v) end)
    end

读取的json文件

[
    {"id":1,"name":"dici","json":"dici.ExportJson","plist":"dici0.plist","png":"dici0.png"},{"id":2,"name":"ForeAnimation","json":"ForeAnimation.ExportJson","plist":"ForeAnimation0.plist","png":"ForeAnimation0.png"}
]

附加一段自动读取cocos的骨骼动画文件为json数据文件的python脚本.这个脚本的功能自动查找当前文件夹,以及其子目录中的骨骼动画文件,并按照指定的格式在当前目录导出json文件

@H_404_119@#coding=utf-8
import os,sys,re
import json

file_path = []
def getNameList(dir,wildcard,recursion):
    exts = wildcard.split(" ")
    files = os.listdir(dir)
    for name in files:
        fullname = os.path.join(dir,name)
        if os.path.isdir(fullname) & recursion:
            getNameList(fullname,recursion)
        else:
            for ext in exts:
                if(name.endswith(ext)):
                    file_path.append(fullname)
                    @H_404_119@#print(fullname)
                    break

class AnimationData:
    id = -1
    name = ""
    image_name = ""
    plist_name = ""
    json_name = ""
    def __init__(self,id,name,image_name,plist_name,json_name):
        self.id = id
        self.image_name = image_name
        self.plist_name = plist_name
        self.json_name = json_name
        self.name = name
    def getDictionary(self):
        ret = {}
        ret["id"] = self.id
        ret["name"] = self.name
        ret["image"] = self.image_name
        ret["plist"] = self.plist_name
        ret["json"] = self.json_name
        return ret

def run():
    getNameList(sys.path[0],".ExportJson",1)
    file_name_list = file_path
    resList = []
    id = 1
    for file_name in file_name_list:
        a = file_name.find(".ExportJson")
        if a<>-1:
            json_name = file_name.split("\\")[-1]
            @H_404_119@#print json_name
            name = json_name.split(".")[0]
            @H_404_119@#print name
            image_name = ("%s0.png")%(name)
            plist_name = ("%s0.plist")%(name)
            res = AnimationData(id,json_name)
            resList.append(res)
            id += 1
    print id

    l_out = []
    for ani in resList:
        l_out.append(ani.getDictionary())

    print l_out
    encode_json = json.dumps(l_out)
    print encode_json

    abs_path = os.path.abspath(sys.argv[0])
    abs_path_list = abs_path.split("\\")

    length = len(abs_path_list)
    out_path = ""
    for index,value in enumerate(abs_path_list):
        if index >= length - 1:
            break
        if index == 0:
            out_path = ("%s\\"%(value))
        else:
            out_path = ("%s%s\\"%(out_path,value))
    out_path = ("%s%s"%(out_path,"AnimationConfig.json"))
    print out_path
    f = open(out_path,"w")
    f.write(encode_json)
    f.close()

if __name__ == "__main__":
    run()

猜你在找的Cocos2d-x相关文章