2015年

1月

29日

SpriteBuilder 背景色を変える(Objective-C Swift C++)





SpriteBuilder 背景色を変える

cocos2d-Swiftで背景の色を変えたいと思い調べました。

背景色を変える方法

CCNoderColorクラスを使って色付きのレイヤーを作成してaddChildします。


Objective-C 言語

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


#import "MainScene.h"


@implementation MainScene


// viewDidLoadと同じ立ち上げ時に起動動作

-(void) didLoadFromCCB

{


    // バックグランドカラー(ホワイト:1.0f ブラック:0.2f

    CCNodeColor *background =

            [CCNodeColor nodeWithColor:[CCColor colorWithRed:1.0f

                                                       green:1.0f

                                                        blue:1.0f

                                                       alpha:1.0f]];

    [self addChild:background];


}


@end


nodeWithColor:メソッドの引数にはccc4関数を使い色を指定します。ccc4は第一引数からそれぞれ、R(赤)B(青)G(緑)O(透明度) の順に設定します。

     Red 1.0 green 1.0 blue 1.0

     Red 0.2 green 0.2 blue 0.2

     Red 1.0 green 0.0 blue 0.0

     Red 0.0 green 1.0 blue 0.0

     Red 0.0 green 0.0 blue 1.0

      Red 1.0 green 1.0 blue 0.0

シアン   Red 0.0 green 1.0 blue 1.0

マゼンタ  Red 1.0 green 0.0 blue 1.0

Swift 言語

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

import Foundation


class MainScene: CCNode {

    

    // onEnter() = viewDidLoad() 同じで起動時に1回動く

    override func onEnter() {


        // 背景色ホワイトカラー 幅:1136 / 2 高さ: 640 / 2

        let background:CCNodeColor = CCNodeColor.nodeWithColor

            (CCColor.whiteColor(), width: 568, height: 320) as CCNodeColor

        

        // backgroundを表示

        self.addChild(background)

        

    }

 

}


 

Cocos2dx 3.x C++言語

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


Top.h

 

#ifndef __Label__Top__

#define __Label__Top__


#include "cocos2d.h"


class Top : public cocos2d::Layer

{

public:

    

    virtual bool init();

    

    static cocos2d::Scene* createScene();

    

    CREATE_FUNC(Top);

};



#endif /* defined(__Label__Top__) */

 


Top.cpp

 

#include "Top.h"


USING_NS_CC;


SceneTop::createScene()

{

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

    auto scene = Scene::create();

    

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

    auto layer = Top::create();

    

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

    scene->addChild(layer);

    

    // シーンを返す

    return scene;

}



// INIT」初期化

bool Top::init()

{

    if ( !Layer::init() )

    {

        return false;

    }

        //画面サイズを取得

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

        // バックグランドカラー(ホワイト

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

                                              winSize.width,

                                              winSize.height);

        this->addChild(background);


    return true;

}


 

目 次