【cocos2d-x 手游研发小技巧(2)循环无限滚动的登陆背景】

原创文章,转载请附上链接:http://www.cnblogs.com/zisou/p/cocos2d-xARPG6.html

首先让大家知道我们想要实现的最终效果是什么样的?

看一个《逆天仙魔录》例子图:

就是一个连贯循环的背景图,如何让他无间隔的循环连贯跑起来,这里我们利用了定时器schedule方法;

定时器功能有无限循环的功能,那么我们运用这个功能主要是拿来循环刷帧的!

我们先准备一下效果图,如下:

这个背景图够长吧?而且它两边已经被我们的美工做成可循环连接的了,所以我们只需要程序把它循环起来。

具体代码如下:

制造背景的方法

void LoginScenes::makebd(float num,int w,int tag)
{
    float x,y;
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    x = size.width;
    y = size.height+origin.y;

    CCSprite *background=CCSprite::create(p_loginallbd);
    background->setAnchorPoint(CCPoint(0,0.5));
    background->setPosition(CCPoint(background->getContentSize().width*num+w,y/2));
    this->addChild(background,tag,tag);
}


循环背景的方法

void LoginScenes::movebd(float times)
{
    float x,y;
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    x = size.width;
    y = size.height+origin.y;

    CCNode *bg1=CCNode::getChildByTag(99);
    CCSprite *sp1=(CCSprite*)bg1;

    CCNode *bg2=CCNode::getChildByTag(98);
    CCSprite *sp2=(CCSprite*)bg2;
    sp1->setPosition(CCPoint(sp1->getPositionX()-0.5,sp1->getPositionY()));
    sp2->setPosition(CCPoint(sp2->getPositionX()-0.5,sp2->getPositionY()));
    if(sp1->getPositionX()<=-sp1->getContentSize().width)
    {
        sp1->setPosition(CCPoint(sp1->getContentSize().width,y/2));
    }
    if(sp2->getPositionX()<=-sp2->getContentSize().width)
    {
        sp2->setPosition(CCPoint(sp2->getContentSize().width,y/2));
    }
}


ok,以上两个函数就能完成,就差最后一句话了就搞定了:

this->schedule(schedule_selector(LoginScenes::movebd)); 


然后我们看一下效果:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值