cocos2dx——实现儿童节贺卡03

最后,添加每个字体(精灵)的效果啦
第一行是”祝“,闪烁动作,一定次数之后放大;
第二行是名字,三个字体分别做顺时针旋转,循环放大缩小,逆时针旋转;
第三行是”节日快乐“四个字循环的左右跑动;

直接上代码,代码写的有点烂:

#ifndef _SecondScene_H_
#define _SecondScene_H_

#include "cocos2d.h"
USING_NS_CC;

class SecondScene :public Layer {
public:
    bool init();
    static Scene* createScene();
    CREATE_FUNC(SecondScene);

public:
    Size visibleSize;
    //几个精灵(字体)
    Sprite* zhu;
    Sprite* jin;
    Sprite* xiang;
    Sprite* yun;
    Sprite* jie;
    Sprite* ri;
    Sprite* kuai;
    Sprite* le;

public:
    void addBackground();
    void addSpriteZhu(); //添加:祝
    void addSpriteNames();//添加第二行:姓名
    void addSpriteJieRi(); //节日 两个字
    void addSpriteKuaiLe();//快乐两个字
};
#endif

实现代码:

#include "SecondScene.h"

USING_NS_CC;


Scene* SecondScene::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();

    // 'layer' is an autorelease object
    auto layer = SecondScene::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool SecondScene::init()
{
    //
    // 1. super init first
    if (!Layer::init())
    {
        return false;
    }
    visibleSize = Director::getInstance()->getVisibleSize();

    addBackground();
    addSpriteZhu();
    addSpriteNames();
    addSpriteJieRi();
    addSpriteKuaiLe();

    return true;
}

void SecondScene::addBackground() {
    auto bg = Sprite::create("bg2.png");
    bg->setScale(1.5);
    this->addChild(bg);
    bg->setPosition(visibleSize.width / 2, visibleSize.height / 2);
}


void SecondScene::addSpriteZhu() {
    zhu = Sprite::create("zhu.png");
    this->addChild(zhu);
    zhu->setPosition(visibleSize.width / 2, visibleSize.height - zhu->getContentSize().height/2);

    auto blink = Blink::create(20, 50);
    auto scaleBy = ScaleBy::create(1, 1.5);
    zhu->runAction(Sequence::create(blink, scaleBy, NULL));
}

void SecondScene::addSpriteNames() {
    //添加 “金”
    jin = Sprite::create("jin.png");
    this->addChild(jin);
    jin->setPosition(visibleSize.width / 4*1, visibleSize.height/2);
    auto rotate1 = RotateBy::create(2, 180);
    jin->runAction(RepeatForever::create(rotate1));

    xiang = Sprite::create("xiang.png");
    this->addChild(xiang);
    xiang->setPosition(visibleSize.width / 4 * 2, visibleSize.height / 2);
    auto rotate2 = RotateBy::create(2, 180);
    auto scaleby = ScaleBy::create(2, 1.5);
    xiang->runAction(RepeatForever::create(Sequence::create(scaleby,scaleby->reverse(),NULL)));

    yun = Sprite::create("yun.png");
    this->addChild(yun);
    yun->setPosition(visibleSize.width / 4 * 3, visibleSize.height / 2);
    auto rotate3 = RotateBy::create(2, -180);
    yun->runAction(RepeatForever::create(rotate3));
}

//先向右然后向左重复
void SecondScene::addSpriteJieRi() {
    jie = Sprite::create("jie.png");
    this->addChild(jie);
    jie->setPosition(visibleSize.width / 5 * 1, visibleSize.height / 5);
    auto moveBy = MoveBy::create(2, Vec2(visibleSize.width / 5*3, 0));
    auto seq = Sequence::create(moveBy, moveBy->reverse(), NULL);
    jie->runAction(RepeatForever::create(seq));

    ri = Sprite::create("ri.png");
    this->addChild(ri);
    ri->setPosition(visibleSize.width / 5 * 2, visibleSize.height / 5);
    auto moveBy1 = MoveBy::create(2, Vec2( visibleSize.width / 5, 0));
    auto seq1 = Sequence::create(moveBy1, moveBy1->reverse(), NULL);
    ri->runAction(RepeatForever::create(seq1));
}

//先向左然后向右移动
void SecondScene::addSpriteKuaiLe() {
    kuai = Sprite::create("kuai.png");
    this->addChild(kuai);
    kuai->setPosition(visibleSize.width / 5 * 3, visibleSize.height / 5);
    auto moveBy = MoveBy::create(2, Vec2( -visibleSize.width / 5, 0));
    auto seq = Sequence::create(moveBy, moveBy->reverse(), NULL);
    kuai->runAction(RepeatForever::create(seq));

    le = Sprite::create("le.png");
    this->addChild(le);
    le->setPosition(visibleSize.width / 5 * 4, visibleSize.height / 5);
    auto moveBy1 = MoveBy::create(2, Vec2( - visibleSize.width / 5 *3, 0));
    auto seq1 = Sequence::create(moveBy1, moveBy1->reverse(), NULL);
    le->runAction(RepeatForever::create(seq1));
}

字体很丑啊,自己p的嘛,审美真烂,实话;

最后效果如下:
这里写图片描述

这里写图片描述

这里写图片描述

孩子还是挺可爱的,哈哈,自恋一下啦。

最后说一下添加音乐,一句话的事,只是在window上不要添加mp3格式就好了:

SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.5);
    SimpleAudioEngine::getInstance()->playBackgroundMusic("music.wav", true);

将上面代码添加在第一个场景中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值