您的位置:首页 > 其它

别猜白块滑动效果实现

2016-07-28 11:48 204 查看
<1>成员变量。

[cpp] view
plain copy

private:  

    UIPanel* panel1;  

    UIPanel* panel2;  

    void update(float dt);  

    float getSpeed(float dt);  

<2>滚动实现。

[cpp] view
plain copy

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>效果截图。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: