Cocos2d-x 入門編-画像の操作について
はじめに
最近cocos2d-xをはじめたので入門編としてまとめていきます。今回は画像の操作についてまとめていきたいと思います。
画像を表示してみよう
画像を表示するには、CCSpriteクラスを利用することで画面上に表示することができます。
表示するLayerに対してadd_childeするだけなので簡単ですね。
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//CCSpriteクラスを初期化する。
auto sprite = Sprite::create("HelloWorld.png");
//画面中央に表示する
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
//layerに追加する
//引数1:設置するオブジェクト
//引数2:Z値
//引数3:オブジェクトのタグ
this->addchild(sprite, 0);
ちなみに複数のレイヤーを扱う場合はTAGをつけてaddchildした方が良さそうです。
以下のようにenumで定義して指定することで管理しやすいですね。
//こんな感じでlayer用のtagを定義する
typedef enum
{
LayerTagHeaderLayer,
LayerTagGameLayer,
LayerTagBackgroundLayer,
} LayerSceneTags;
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
this->addchild(sprite, 0, LayerTagMainLayer);
オブジェクトのZ値(奥行き)を変更するには
sprite:cocos2d-xのアイコン
sprite2:droid君
とした場合に、以下の様に記述するとZ値(奥行き)を変更することができます。
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite, 1, LayerTagGameLayer);
auto sprite2 = Sprite::create("ic_launcher.png");
sprite2->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
this->addChild(sprite2, 2, LayerTagGameLayer);
画像の表示位置を変更する場合
CCSpriteクラスのsetposisonというメソッドで変更することができます。
中央に表示する場合
// 画面解像度を取得する
Size visibleSize = Director::getInstance()->getVisibleSize();
//0座標を取得する
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
任意の位置に表示する場合
Pointクラスを利用してオブジェクトの表示位置をすることができます。
OpenGL ESでは画面左下が原点となっている(0,0)
Point(x座標位置, y座標位置);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Point(10, 10));
画像サイズを変更する場合
CCSpriteクラスのsetScaleというメソッドで変更することができます。
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
sprite->setScale(2.0, 2.0);
表示・非表示を制御するには
表示ON/OFF
spriteオブジェクトのvisible変数をfalseにすることで非表示にすることができます。
auto sprite = Sprite::create("HelloWorld.png");
sprite->setVisible(false);
透過表示
spriteオブジェクトのopacityを調整(0〜255)することで透過表示ができます。
255:透過表示OFF
0:非表示になる
auto sprite = Sprite::create("HelloWorld.png");
sprite->setOpacity(100);
画像をアニメーションさせてみよう
cocos2d-xにはいくつかアニメーションするためのアクションが用意されています。
今回は簡単なアクションのみ試してみた結果を記載しておきます。
・移動アクション
auto move = MoveBy::create(2.0f, Point(100, 100));
sprite->runAction(move);
・スケールアクション
auto sacale = ScaleBy::create(2, 5);
sprite->runAction(sacale);
・回転アクション
auto rotate = RotateBy::create(0, 90);
sprite->runAction(rotate);
・フェードイン
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
sprite->setOpacity(0);
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeIn::create(2);
sprite->runAction(action);
・フェードアウト
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer)
auto action = FadeOut::create(2);
sprite->runAction(action);
・透明度を指定したアニメーション
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto action = FadeTo::create(5, 100);
sprite->runAction(action);
・複数のアクションを連結してみる
Spawnクラスを利用して、複数のアクションを並列で実行することができます。
実際には、アニメーションパターン毎にクラスを作ってアニメーション処理することになるんだと思います。
可変長引数でアクションを指定し、最後はNULLを指定してください。
auto sprite = Sprite::create("HelloWorld.png");
Size visibleSize = Director::getInstance()->getVisibleSize();
sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
this->addChild(sprite, 1, LayerTagGameLayer);
auto move = MoveBy::create(2, Point(100, 100));
auto rotate = RotateBy::create(2, 270);
auto spawn = Spawn::create(move, rotate, nullptr);
sprite->runAction(spawn);
Author And Source
この問題について(Cocos2d-x 入門編-画像の操作について), 我々は、より多くの情報をここで見つけました https://qiita.com/kazuhiro1128/items/3721ab11f4a6b318383e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .