zoukankan      html  css  js  c++  java
  • 【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)); 


    然后我们看一下效果:

  • 相关阅读:
    【SQL Server学习笔记】Service Broker创建异步的、数据驱动的消息应用程序
    记录几句不错的话
    DBA最缺的不是技术
    小数点引起的数据类型转换问题
    hdu 3062 2SAT最基础题
    POJ 1679 判断最小生成树是否唯一
    POJ 1459 构图+最大流(Edmond_karp模版)
    POJ 3522 最大边与最小边差值最小的生成树
    POJ 1659 根据度序列构图
    POJ 1273 求最大流(Edmond_karp模板题)
  • 原文地址:https://www.cnblogs.com/zisou/p/cocos2d-xARPG6.html
Copyright © 2011-2022 走看看