cocostudio導出數據在代碼中加載

使用cocos v2.x發佈的CSB資源更換了加載方式,需要用CSLoader來加載。目前的cocos支持的語言有C++、js、lua, 編輯器默認導出的格式爲csb、json,下面來分語言介紹如何在引擎加載編輯器導出的數據:

C++(僅能加載csb數據):

#include "ui/CocosGUI.h"
#include "Cocos Studio/Cocos Studio.h"

using namespace cocos2d;
using namespace Cocos Studio::timeline;

void myScene::initFunc() 
{ 
     //通過csb創建場景
     Node *rootNode = CSLoader::createNode("MainScene.csb");
     this->addChild(rootNode);

     //通過csb創建動畫 
     ActionTimeline *action = CSLoader::createTimeline("MainScene.csb"); 
     rootNode->runAction(action); 

     //同一個文件創建的節點只能使用同一個文件創建的動畫。 
     //從第0幀循環播放動畫
     action->gotoFrameAndPlay(0,true);
} 

Lua(僅能加載csb數據和lua文件):

  加載csb:

    --相關代碼在src\packages\mvc\ViewBase.lua文件
    function ViewBase:createResoueceNode(resourceFilename)
        if self.resourceNode_ then
            self.resourceNode_:removeSelf()
                self.resourceNode_ = nil
        end
        -- 通過csb創建場景
        self.resourceNode_ = cc.CSLoader:createNode(resourceFilename)
        self:addChild(self.resourceNode_)

        -- 通過csb創建動畫
        local action = cc.CSLoader:createTimeline(resourceFilename)
        self.resourceNode_:runAction(action)

        --同一個文件創建的節點只能使用同一個文件創建的動畫。 
        --從第0幀循環播放動畫
        action:gotoFrameAndPlay(0, true)

        assert(self.resourceNode_, string.format("ViewBase:createResoueceNode() - load resouce node from file \"%s\" failed", resourceFilename))
        self:addChild(self.resourceNode_)
    end

  加載lua(去商店下載Lua導出插件):

   --相關代碼在src\app\views\MainScene.lua文件
   -- 注:這裏 MainScene.lua 爲發佈出來的 Lua 代碼文件。您可以在發佈目錄中找到它。
       MainScene.RESOURCE_FILENAME = "MainScene.csb" 修改爲 
          MainScene.RESOURCE_FILENAME = "MainScene.lua"

   --相關代碼在src\packages\mvc\ViewBase.lua文件:    
   function ViewBase:createResoueceNode(resourceFilename)
       if self.resourceNode_ then
            self.resourceNode_:removeSelf()
                self.resourceNode_ = nil
       end
       -- 通過lua創建場景
       local scene=require(resourceFilename)
       local gameScene=scene.create(nil)

       -- 通過lua創建動畫
       gameScene.root:runAction(gameScene.animation)

       --同一個文件創建的節點只能使用同一個文件創建的動畫。 
       --從第0幀循環播放動畫
       gameScene.animation:gotoFrameAndPlay(0,true)

       self.resourceNode_=gameScene.root

       assert(self.resourceNode_, string.format("ViewBase:createResoueceNode() - load resouce node from file \"%s\" failed", resourceFilename))
       self:addChild(self.resourceNode_)
    end    

JS(僅能加載Json數據):

//相關代碼在src\app.js文件
var HelloWorldLayer = cc.Layer.extend({
    sprite:null,
    ctor:function () {
        //////////////////////////////
        // 1. super init first
        this._super();

        /////////////////////////////
        // 2. add a menu item with "X" image, which is clicked to quit the program
        //    you may modify it.
        // ask the window size
        var size = cc.winSize;
        //通過json創建場景
        var mainscene = ccs.load(res.MainScene_json);
        //獲取動畫
        var action = mainscene.action;
        if(action){
            //綁定動畫
            mainscene.node.runAction(action);
            //同一個文件創建的節點只能使用同一個文件創建的動畫。 
            //從第0幀循環播放動畫
            action.gotoFrameAndPlay(0, true);
        }
        this.addChild(mainscene.node);
        return true;
    }
});

注意:

  1. 您可以在發佈工程目錄的res子目錄中找到發佈出來的csb/json文件。

  2. 2.1及其以上版本的cocos導出的數據,Cocos 2d-x 3.4及其以上版本和Cocos 2d-js 3.3及其以上的版本均可以加載。

  1. Cocos v2.x假定在編輯器裏邊的資源目錄即遊戲的最終的目錄結構,因而如果你修改了導出資源的目錄則需要編輯器目錄也需要跟着修改。也可以用addSearchPath來把你的路徑添加到FileUtils中,但要注意文件名衝突。


源地址:http://www.cocos.com/doc/article/index?type=cocostudio&url=/doc/cocos-docs-master//manual/studio/v4/chapter4/LoadError/../../chapter3/HowToCode/LoadExportData/zh.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章