大家看看哇 我GOOGLE百度了很久 感觉和别人写的都是一样的哇 为啥我报错呢 环境是VS2012
是不是回调函数参数没写对啊?应该有两个参数~~
遇到同样的问题,参数没错,求解答,谢谢~!
我也是遇到同样的问题 我就直接用的函数地址 传入的
uibutton->addTouchEventListener(this, (ui::SEL_TouchEvent)(&Begin::startButton));
我的处理函数:
void Begin::startButton(Object* object, ui::TouchEventType type)
我连这两个类型都找不到ui::SEL_TouchEvent
ui::TouchEventType,感觉是头文件没包含到的感觉
但是我好像有包含哦TextButton类找得到,Widget类找不到
同样的问题,只包含了头文件uiwidget。h,不知道是不是包含的文件少了
不懂是不是BUG,要使用toucheventselector必须引入cocos2d::ui名字空间,像这样:
USING_NS_CC;
using namespace cocos2d::ui;
原因:
UIWidget.h中的定义:
…
namespace ui{
…
CC_DEPRECATED_ATTRIBUTE typedef void (Ref::SEL_TouchEvent)(Ref,TouchEventType);
#define toucheventselector(_SELECTOR) (SEL_TouchEvent)(&_SELECTOR)
…
}
可以看出SEL_TouchEvent是ui名字空间下的,
而toucheventselector只是个宏,展开后就是
(SEL_TouchEvent)(&_SELECTOR)
如果没有引入ui名字空间,自然找不到SEL_TouchEvent。
3.1.1中SEL_TouchEvent貌似deprecated了,以后的写法难道是?
loginButton->addTouchEventListener(
ui::Widget::ccWidgetTouchCallback(
CC_CALLBACK_2(HelloWorld::btnTouch, this)
));
void HelloWorld::btnTouch(Ref* pSender, ui::Widget::TouchEventType type){…}
网上找不到这样的写法啊,只能自己修炼C++11了。。