2015年

2月

12日

Cocos2d-x Ver 3.x Sliderの作成

Cocos2dx 3.x C++言語

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

#ifndef __Slider__TopSliderScene__

#define __Slider__TopSliderScene__


#include "cocos2d.h"

USING_NS_CC;


class TopSliderScene :public Layer

{

protected:

    // コンストラクタ

    TopSliderScene();

    // デストラクタ

    virtual ~TopSliderScene();

    // メソッド CREATE_FUNCとの連携

    bool init() override;

    

public:

    static cocos2d::Scene* createScene();

    

    CREATE_FUNC(TopSliderScene);

};


#endif /* defined(__Slider__TopSliderScene__) */


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

#include "TopSliderScene.h"

#include <ui/CocosGUI.h>

USING_NS_CC;     // cocos2d

using namespace ui;

using namespace std; // String*


// _/_/_/ コンストラクタ プロパティー _/_/_/

TopSliderScene::TopSliderScene()

{

    

}


// MainScene デストラクタで解放 メモリーリークを防ぐ

TopSliderScene::~TopSliderScene()

{

    

}


// createSceneLayerSceneに貼り付けて返すクラスメソッドです。

// 自分自身(TopSliderScene)を生成し、空のSceneに貼り付けて返す簡単な処理を行っているだけです。

// これでほかのシーンからの遷移が楽に行えます。

Scene* TopSliderScene::createScene()

{

    

    auto scene = Scene::create();

    auto layer = TopSliderScene::create();

    scene->addChild(layer);

    

    return scene;

}


bool TopSliderScene::init()

{

    if ( !Layer::init() )

    {

        return false;

    }

    

    

    // 画面サイズサイズを取得

    auto window_size = Director::getInstance()->getVisibleSize();

    

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

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

                                         window_size.width,

                                         window_size.height);

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

    this->addChild(background, 0);

    

    

    // スライダーラベルを生成

    auto label1 = Label::createWithSystemFont("スライダー", "Arial", 80);

    // ラベルの色

    label1->setColor(Color3B::WHITE);

    // ラベルの設置

    label1->setPosition(Vec2(window_size.width / 2 ,window_size.height - 160));

    // ラベルタイトルを追加

    this->addChild(label1,1);

    

    // 0ラベルを生成

    auto label2 = Label::createWithSystemFont("0", "Arial", 80);

    // ラベルの色

    label2->setColor(Color3B::WHITE);

    // ラベルの設置

    label2->setPosition(Vec2(window_size.width / 2 - 289 ,window_size.height - 320));

    // ラベルタイトルを追加

    this->addChild(label2,1);

    

    // 100ラベルを生成

    auto label3 = Label::createWithSystemFont("100", "Arial", 80);

    // ラベルの色

    label3->setColor(Color3B::WHITE);

    // ラベルの設置

    label3->setPosition(Vec2(window_size.width / 2 + 289 ,window_size.height - 320));

    // ラベルタイトルを追加

    this->addChild(label3,1);

    

    // スライダー

    auto slider = Slider::create();

    // スライダーバック画像

    slider->loadBarTexture("sliderTrack.png"); // 空のマップ

    // スライダーのボール

    slider->loadSlidBallTextures("sliderThumb.png", "", "");

    // スライダー進捗画像

    slider->loadProgressBarTexture("sliderProgress.png"); // 完全な姿

    // 配置位置

    slider->setPosition(Vec2(window_size.width / 2.0f,

                             window_size.height / 2.3f/

                             * + slider->getSize().height * 3.0f*/));

    // スライダー数値の取得

    slider->addEventListener([](Ref* ref,Slider::EventType type){

        

        // スライダーのキャスト変換

        auto s = static_cast<Slider*>(ref);

        // 数値をログ表示

        log("数値 %d", s->getPercent());

        

        // スライダーのキャスト変換

        Slider* slider = dynamic_cast<Slider*>(ref);

        int percent = slider->getPercent();

        // 数値をログ表示

        log("percent 数値:%d",percent);

        

    });

    

    // スライダー表示

    addChild(slider);

    

    return true;

}

 

GitHub Slider_Cocos2d-x

 

目 次

 

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