美文网首页cocos 2dx
cocos2d-x中 关于.plist文件的解析

cocos2d-x中 关于.plist文件的解析

作者: invalid_name | 来源:发表于2016-06-05 17:16 被阅读495次

    在cocos2d-x中可以用.plist格式的文件来保存数据,它是XML文件格式的一种,在网上搜索了一下发现关于这方面的资料好像不多,而且不够全面,所以自己研究了一下做个分享,plist文件的解析其实很简单,可以参考cocos2d-x类库中的CCSpriteFrameCache类和CCParticleSystem类,它主要是使用CCDictionary类来对.plist文件进行操作。比较复杂一点的里面会混有CCArray 的数据格式。比如下面这个:

    Paste_Image.png

    上图中的结构是以 dict 开头解析方法如下:

        --加载Plist文件  
        local musicDic   = CCDictionary:createWithContentsOfFile("xxxx/xxxx.plist")
        --按key名称获取数组中数据
        local musicArray = musicDic:objectForKey("ForestPolka")
        ---获取数组元素数量
        local count = musicArray:count()
        -- 用两个表存储获数据
        local keyboard = {}
        local duration = {}
        for i = 1, count do
            --按索引获取数组中所有字典 [第一个位置为 0 ]
            local dic = musicArray:objectAtIndex(i - 1) 
            --根据键获取对应的值
            local key = dic:objectForKey("keyboard"):floatValue()
            local time = dic:objectForKey("musicDuration"):floatValue()
            --将解析出来的数据放入表中以便使用
            table.insert(keyboard, key)
            table.insert(duration, time)
        end 
    

    如果文件中是以 <array> 开头的话就要把文件内容加载到 CCArray 的数据结构内存中:

    Paste_Image.png

    加载的方法和 CCDictionary 是一样的:
    local musicArr = CCArray:createWithContentsOfFile("xxx/xxx.plist")
    接下来的数据和上面第一张图以<dict>开头结构是一样的,可以获取出数组的数量,这里只有一个,我们直接按索引取出这个 dict (第一个索引是0):
    local dictionary = musicArr:objectAtIndex(0)

    之后的方法完全一模一样:

        --获取ForestPolka中的数组
        local arr = dictionary:objectForKey("ForestPolka")
        --数组元素数量
        local count = arr:count() 
    
        local keyboard = {}
        local duration = {}
    
        for i = 1, count do
            local dic = arr:objectAtIndex(i - 1) 
            local key = dic:objectForKey("keyboard"):floatValue()
            local time = dic:objectForKey("musicDuration"):floatValue()
            
            table.insert(keyboard, key)
            table.insert(duration, time)
        end
    

    类似这些的文件解析过程都很简单,只要看清楚里面的数据结构,用对应的方法一层层剥开,就能获取到想要的数据。

    相关文章

      网友评论

        本文标题:cocos2d-x中 关于.plist文件的解析

        本文链接:https://www.haomeiwen.com/subject/cgrrdttx.html