cocos2dx-3.x中如何在update中傳入多個參數(利用std::bind實現)

在使用cocos2dx-3.x的過程中,可能會出現需要在update中傳入不止float dt一個參數的情況,因爲其底層使用的C++11的std::bind來實現的,因此可以使用以下的解決方案進行設計。


bool HelloWorld::init()

{
    if ( !Layer::init() )
    {
        return false;
    }
    
    auto scheduler = Director::getInstance()->getScheduler();
    int i = 10;
    std::string name = "sssss";
    scheduler->schedule(CC_CALLBACK_1(HelloWorld::update,this,&i,name),this,0.1f,-1,1,false,"hello");
    
    return true;
}

//回調
void HelloWorld::update(float t,void * data,std::string name)
{
    auto i = (int *)data;
    log("%s",name.c_str());
    log("%d",*i);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章