3.0 後的事件回呼函數介面都不一樣了,例如按鈕的menu_selector(),update的 schedule_selector等,都已成明日黃花。而新的回調介面,則由四個CC_CALLBACK取代。
下面先舉例一些不同的調用方法:
2.0MenuItemImage* item =MenuItemImage::create("","",this,menu_selector(HelloWorld::callback));3.0auto item = MenuItemImage::create("","",CC_CALLBACK1(HelloWorld::callback,this));
看到這裡有人可能會問,如果要更改按鈕的回呼函數怎麼做呢?如果你繼續用setTarget();這個介面,那可行不通了。
3.0裡用 替代了 ,參數如下:
setCallback(const ccMenuCallback&callback);
這裡有看到一個新鮮的詞:
這貨是什麼碗糕?哈哈哈哈,如果你問我,那你就問錯人了!!!我也只能告訴你大概是怎麼個用法,嘿嘿。
首先,從setTarget()和setCallback()裡的參數變化可以看出,ccMenuCallback 實際上就包含了Object *rec, SEL_MenuHandler selector這倆參數,舉個例子:
2.0Item->setTarget(this,menu_selector(HelloWorld::callback));3.0Item->setCallback(CC_CALLBACK1(HelloWorld::callback,this));
恩,就是這樣子,怎麼感覺說的都沒啥深度,噗,有點模仿“笨木頭”的語氣呀。
先舉例:
1)回呼函數不帶參數的情況
2.0CallFunc::create(this,callfunc_selector(ActionSequence2::callback1));void ActionSequence2::callback1(){};3.0CallFunc::create(CC_CALLBACK_0(ActionSequence2::callback1,this)),void ActionSequence2::callback1(){};
2)回呼函數帶參數的情況
2.0CCSequence* seq = CCSequence::create(MoveBy::create(2.0f,ccp(150,0)),CallFuncN::create(this,callfuncN_selector(ActionCallFunc::callback)),NULL);3.0 auto action = Sequence::create( MoveBy::create(2.0f, Point(150,0)), CallFuncN::create( CC_CALLBACK_1(ActionCallFuncN::callback, this)), NULL);
:CC_CALLBACK0是回調不帶參數的回呼函數,CC_CALLBACK1是回調有參數的回呼函數。
既然說到了action,順便再說下3.0裡Callfunc的新的用法(之前的版本應該沒有吧…)
auto action1 = CallFunc::create(
} );
注意紅色的部分,以前動作回調都是要新寫一個回呼函數,這樣子雖然問題不大,但如果用到回調的地方多了,而且回調的代碼也就幾行而已,那之前的做法就有點受不了,現在好了,可以直接把動作執行完要回調的函數代碼直接寫到建立裡來,是不是方便多了。
auto touchListener = EventListenerTouchOneByOne::create();touchListener->setSwallowTouches(true); touchListener->onTouchBegan = CC_CALLBACK_2(MyMenu::onTouchBegan, this);touchListener->onTouchMoved = CC_CALLBACK_2(MyMenu::onTouchMoved, this);touchListener->onTouchEnded = CC_CALLBACK_2(MyMenu::onTouchEnded, this);touchListener->onTouchCancelled = CC_CALLBACK_2(MyMenu::onTouchCancelled, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);
恩,目前也就瞭解這些了。以後再繼續補吧。
轉載請註明源地址:http://blog.csdn.net/start530/article/details/18216679