2015年

2月

16日

Cocos2d-x Ver 3.x Plist ValueVector(可変長配列)

キーなし配列型Plistの場合

data.plist


<?xml version="1.0" encoding="UTF-8"?>    

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">    

<plist version="1.0">    

<array>    

    <string>Number1</string>

    <string>Number2</string>

    <string>Number3</string>

    <string>Number4</string>

</array>    

</plist>


Cocos2dx 3.x C++言語

TopPlistScene.hを次のように変更してみてください。

#ifndef __Plist__TopPlistScene__

#define __Plist__TopPlistScene__


#include "cocos2d.h"


class TopPlistScene : public cocos2d::Layer

{

public:

    

    //初期化のメソッド

    virtual bool init();

    

    static cocos2d::Scene* createScene();

    

    // create()を使えるようにしている。

    CREATE_FUNC(TopPlistScene);

    

};


#endif /* defined(__Plist__TopPlistScene__) */


TopPlistScene.cppを次のように変更してみてください。

#include "TopPlistScene.h"


// 名前空間 #define USING_NS_CC using namespace cocos2d

USING_NS_CC;


using namespace std; // String*


Scene* TopPlistScene::createScene()

{

    // 「シーン」は自動解放オブジェクトです

    auto scene = Scene::create();

    

    // 「レイアウト」は自動解放オブジェクトです

    auto layer = TopPlistScene::create();

    

    // シーンに子としてレイヤーを追加

    scene->addChild(layer);

    

    // シーンを返す

    return scene;

}


// INIT」初期化

bool TopPlistScene::init()

{

    if ( !Layer::init() )

    {

        return false;

    }

    

    //画面の座標関係の詳しい説明はここ http://www.cocos2d-x.org/wiki/Coordinate_System

    //画面サイズを取得

    Size winSize = Director::getInstance()->getVisibleSize();

    Point origin = Director::getInstance()->getVisibleOrigin();

    

    // バックグランドカラー

    auto background = LayerColor::create(Color4B::BLUE,

                                         winSize.width,

                                         winSize.height);

    //バックグランドカラー追加 第2引数は表示順

    this->addChild(background, 0);

    

    //////////////////////////////////////////////

    

    //タイトルを設置

    auto lbl_title = Label::createWithSystemFont("Info Plist", "arial", 100);

    lbl_title->setPosition(Point(origin.x + winSize.width/2,

                                 origin.y + winSize.height

                                 -lbl_title->getContentSize().height));

    this->addChild(lbl_title,1);

    

    //////////////////////////////////////////////

    

    // ValueVector 配列

    ValueVector vec = FileUtils::getInstance()->getValueVectorFromFile("data.plist");

    std::string vec_0 = vec.at(0).asString();

    std::string vec_1 = vec.at(1).asString();

    std::string vec_2 = vec.at(2).asString();

    std::string vec_3 = vec.at(3).asString();

    

    auto label1 = Label::createWithSystemFont(vec_0, "arial", 80);

    // label1を表示

    addChild(label1);

    // ラベルの位置

    label1->setPosition(Vec2(winSize.width/2, winSize.height/2 - 200)); // info2

    // ラベルの色:ホワイト

    label1->setColor(Color3B::WHITE);

    

    auto label2 = Label::createWithSystemFont(vec_1, "arial", 80);

    // label2を表示

    addChild(label2);

    // ラベルの位置

    label2->setPosition(Vec2(winSize.width/2, winSize.height/2 - 100)); // 2

    // ラベルの色:ホワイト

    label2->setColor(Color3B::WHITE);

    

    auto label3 = Label::createWithSystemFont(vec_2, "arial", 80);

    // label3を表示

    addChild(label3);

    // ラベルの位置

    label3->setPosition(Vec2(winSize.width/2, winSize.height/2)); // info1

    // ラベルの色:ホワイト

    label3->setColor(Color3B::WHITE);

    

    auto label4 = Label::createWithSystemFont(vec_3, "arial", 80);

    // label4を表示

    addChild(label4);

    // ラベルの位置

    label4->setPosition(Vec2(winSize.width/2, winSize.height/2 + 100)); // 1

    // ラベルの色:ホワイト

    label4->setColor(Color3B::WHITE);

    

    //////////////////////////////////////////////

    

    return true;

}


 

GitHub PlistValueVector

アクセスカウンター 活性酸素 アクセスカウンター