求助下关于点击事件的

我用cocostudio完成的UI,然后在VS里进行添加一些按钮函数,但是按照我之间的做法却一直报错,由于是新手你懂得,上代码:

ui::UILayer* ul = ui::UILayer::create();
ui::UIWidget* pWidget = GUIReader::shareReader()->widgetFromJsonFile(“test.json”);
ul->addWidget(pWidget);
this->addChild(ul, 2, 10);

ui::UIButton* pLoginBtn = dynamic_castui::UIButton*(pWidget->getChildByTag(101));
pLoginBtn->addTouchEventListener(this,toucheventselector(LoginScene::CallLogin));

运行后报错地方如下:UIWdget.cpp:

void Widget::addTouchEventListener(CCObject *target, SEL_TouchEvent selector)
{
_touchEventListener = target;//就是这里了。“0x00689899 处最可能的异常: 0xC0000005: 写入位置 0x00000108 时发生访问冲突”
_touchEventSelector = selector;
}

怎么回事呢。说我target传错了?我传的this。之前也是this都没问题啊。。

您好,请问一下您的这个类是继承自谁?

我帮您找了一下问题,是不是您的回调函数形式不对,请参考下这种形式:void menuCloseCallback(Ref* pSender,TouchEventType aType);:14:

CCLayer啊。。~
class LoginScene : public CCLayer
{
public:
virtual bool init();
virtual void visit();
static cocos2d::CCScene* scene();
void CallLogin(CCObject* pSender, ui::TouchEventType type);
CREATE_FUNC(LoginScene);

};

还有,记得加上这些代码在头文件里面

#include “cocos2d.h”
#include “CocoStudio.h”
#include “CocosGUI.h”

USING_NS_CC;
using namespace cocostudio;
using namespace ui;

额。。。。解决的。该BUTTON不在根目录下面,实在另外一个图片上面,所以问题出在:
ui::UIButton* pLoginBtn = dynamic_castui::UIButton*(pWidget->getChildByTag(101));
修改为:
ui::UIButton* pLoginBtn = dynamic_castui::UIButton*(pWidget->getChildByTag(1)->getChildByTag(95)->getChildByTag(101));
问题解决。。

多谢您贴出解决方案,谢谢支持CocoStudio:903: