スプライトを使おう (4/4)
作成:2015-06-06 09:18
更新:2015-06-06 09:18
更新:2015-06-06 09:18
■その他のアニメーション
アニメーションのためのクラス(Actionのサブクラス)は、他にも色々と用意されています。主なものを以下にまとめておきましょう。
●ScaleTo
●ScaleBy
●RotateTo
●RotateBy
――これも下に簡単な例を挙げておきましょう。繰り返しを使い、5つのスプライトを作成して、一斉に回転をさせています。やってみるとわかりますが、作成されたスプライトはすべてシンクロしたかのように揃って回転します。スプライトの作成と準備にかかる時間はほとんど瞬時なので、すべて同時にrunActionしたかのように動くんですね!
●ScaleTo
auto 変数 =イメージを拡大縮小するアニメーションです。引数には秒数と倍率を指定します。例えば、create(10, 2.0)なら、10秒かけて2倍の倍率に拡大します。
ScaleTo::create( 秒数 , 倍率 );
●ScaleBy
auto 変数 =こちらは、現在の何倍に拡大するか?という形で拡大縮小します。例えば、create(10, 2.0)だと、現在の2倍の大きさにアニメーションをします。現在の倍率が2.0なら、オリジナルの4倍の大きさまでアニメーションするわけです。
ScaleBy::Create( 秒数 , 倍率 );
●RotateTo
auto 変数 = RotateTo::Create( 秒数 , 角度 );こちらは回転です。これは右回りに指定の角度だけ回転させます。例えば、create(10, 90)とすると、右に90度回転した向きにアニメーションします。
●RotateBy
auto 変数 = RotateBy::Create( 秒数 , 角度 );これも、現在の向きから指定した角度だけ回転をさせます。例えば、create(10, 90)だと、現在の向きから、更に90度右に回転します。
――これも下に簡単な例を挙げておきましょう。繰り返しを使い、5つのスプライトを作成して、一斉に回転をさせています。やってみるとわかりますが、作成されたスプライトはすべてシンクロしたかのように揃って回転します。スプライトの作成と準備にかかる時間はほとんど瞬時なので、すべて同時にrunActionしたかのように動くんですね!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
#pragma execution_character_set("utf-8")
#include "HelloWorldScene.h"
USING_NS_CC;
Scene* HelloWorld::createScene()
{
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
Director::getInstance()->setDisplayStats(false); // stats OFF
for (int i = 1; i <= 5; i ++){
auto sprite = Sprite::create("character.png");
sprite->setAnchorPoint(Vec2(0.5, 0.5));
sprite->setPosition(100 * i, origin.y + 100);
this->addChild(sprite, 1);
auto rotate = RotateBy::create(10, 360);
sprite->runAction(rotate);
}
return true;
}
※関連コンテンツ
「初心者のためのCocos2d-xゲームプログラミング入門」に戻る