cocos2d-x实现背景滚动

这篇博客详细介绍了如何使用cocos2d-x框架实现背景滚动效果。通过添加多个背景图片并调整其位置,配合更新函数来实现平滑滚动。同时,还展示了如何添加云彩图片并使其动态移动,增强了场景的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



#include "BackGround.h"


bool BackGround::init(){

    if(!Node::init())

    {

        return false;

    }

    //添加背景图片

    auto spbk=Sprite::create("img_bg_level_1.jpg");

    spbk->setTag(10);

    this->addChild(spbk);

    auto spbk02=Sprite::create("img_bg_level_1.jpg");

    this->addChild(spbk02);

     spbk02->setTag(11);

    auto spbk03=Sprite::create("img_bg_level_1.jpg");

    this->addChild(spbk03);

    spbk03->setTag(12);

    spbk->setAnchorPoint(Vec2::ZERO);

    spbk->setPosition(Vec2::ZERO);

    spbk02->setAnchorPoint(Vec2::ZERO);

    spbk03->setAnchorPoint(Vec2::ZERO);

    //滚动贴图

    this->scheduleUpdate();

    //添加云彩图片

    auto spcloud=Sprite::create("img_cloud_1.png");

    this->addChild(spcloud);

    spcloud->setTag(14);

    spcloud->setAnchorPoint(Vec2::ZERO);

    int px=random()%(int)Director::getInstance()->getWinSize().width;

    int py=Director::getInstance()->getWinSize().height

           +spcloud->getContentSize().height;

    spcloud->setPosition(px, py);

    count=0;

    return true;

}

void BackGround::update(float t){

    //移动云彩

    count=count+1;

  //  if(count%3==0)

    {  auto spcloud=this->getChildByTag(14);

        spcloud->setPositionY(spcloud->getPositionY()-1);

//        spcloud->runAction(MoveBy::create(0.1, Vec2(0,-5)));

        if(spcloud->getPositionY()<-spcloud->getContentSize().height)

        {

            spcloud->setPositionY(

                Director::getInstance()->getWinSize().height+spcloud->getContentSize().height);

        }

     

    }

    //////////移动背景

    if(count%2==0)

    {

    auto spbk=this->getChildByTag(10);

    auto spbk02=this->getChildByTag(11);

     auto spbk03=this->getChildByTag(12);

    spbk->setPositionY(spbk->getPositionY()-1);

    spbk02->setPositionY(spbk->getPositionY()+spbk->getContentSize().height);

    spbk03->setPositionY(spbk02->getPositionY()+spbk02->getContentSize().height);

    

    if(spbk02->getPositionY()==0)

    {

        spbk->setPositionY(0);

    }

        count=0;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值