Lab

Cocos2d-x v3:拡大/縮小のアニメーション

 Tag :  Published : 2014-6-9

Pocket

ScaleTo、ScaleByを使用します。
スプライトが拡大/縮小するアニメーションを作ります。
> Ver2.x : 『拡大/縮小のアニメーション』はこちら

拡大/縮小のアニメーション – 絶対値/縦横同じ比率(ScaleTo)

画面中央のスプライトが、1秒かけて縦横それぞれ2倍に拡大します。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //アニメーションを作成 ScaleTo::create(時間, 比率);
    auto action = ScaleTo::create(1, 2);
    
    //アニメーション開始
    sprite->runAction(action);
    

拡大/縮小のアニメーション – 絶対値/縦横異なる比率(ScaleTo)

画面中央のスプライトが、1秒間かけて横2倍、縦0.5倍になります。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //アニメーションを作成 ScaleTo::create(時間, X方向比率、Y方向比率);
    auto action = ScaleTo::create(1, 2, 0.5);
    
    //アニメーション開始
    sprite->runAction(action);
    

拡大/縮小のアニメーション – 相対値/縦横同じ比率(ScaleBy)

画面中央に0.5倍で表示されているスプライトが、1秒かけて縦横それぞれ2倍に拡大します。
ScaleToとの違いは、現サイズから何倍にするか、と指定する点です。
0.5倍×2倍=1倍ということで、最終的に本来のサイズに戻ります。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //サイズを0.5倍に変更
    sprite->setScale(0.5);
    
    //アニメーションを作成 ScaleBy::create(時間, 比率);
    auto action = ScaleBy::create(1, 2);
    
    //アニメーション開始
    sprite->runAction(action);
    

拡大/縮小のアニメーション – 相対値/縦横異なる比率(ScaleBy)

画面中央に0.5倍で表示されているスプライトが、1秒かけて縦0.5倍、横2倍に変形します。
ScaleToとの違いは、現サイズから何倍にするか、と指定する点です。
横は0.5倍×2倍=1倍、縦は0.5倍×0.5倍=0.25倍になります。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //サイズを0.5倍に変更
    sprite->setScale(0.5);
    
    //アニメーションを作成 ScaleBy::create(時間, X方向比率、Y方向比率);
    auto action = ScaleBy::create(1, 2, 0.5);
    
    //アニメーション開始
    sprite->runAction(action);
    

pageTop