别踩白块滚动效果的实现

来源:互联网 发布:光纤数据采集卡 编辑:程序博客网 时间:2024/05/19 22:03

<1>成员变量。

private:UIPanel* panel1;UIPanel* panel2;void update(float dt);float getSpeed(float dt);

<2>滚动实现。

bool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if ( !CCLayer::init() )    {        return false;    }    UILayer* _uiLayer = UILayer::create();UIPanel* _uiPanel = dynamic_cast<UIPanel*>(GUIReader::shareReader()->widgetFromJsonFile("Scene/BieCaiBaiKuai/BieCaiBaiKuai.json"));_uiLayer->addWidget(_uiPanel);addChild(_uiLayer);//panel1 = dynamic_cast<UIPanel*>(_uiPanel->getChildByName("bgPanel"));CCSize winSize = CCDirector::sharedDirector()->getWinSize();panel2 = dynamic_cast<UIPanel*>(panel1->clone());panel2->setPosition(ccp(0.0f, winSize.height));addChild(panel2);  //别忘了添加了,panel1在加载时已经添加里面了。但是panel2不会。//this->scheduleUpdate();    return true;}void HelloWorld::update(float dt){CCSize winSize = CCDirector::sharedDirector()->getWinSize();//*/    panel1->setPositionY(panel1->getPositionY() - getSpeed(dt));panel2->setPositionY(panel1->getPositionY() + winSize.height);if(panel1->getPositionY() < -winSize.height){panel1->setPositionY(0.0f);}//*/}float HelloWorld::getSpeed(float dt){static float time = 0.0f;time += dt;if(time <= 2.0f)return 2.0f;else if(time <= 4.0f)return 10.0f;else if(time <= 6.0f)return 20.0f;else if(time <= 8.0f)return 30.0f;else if(time <= 10.0f){time = 0.0f;return 40.0f;}}

<3>效果截图。


0 0