Cocostudio制作的UI, 怎么跟相应的函数绑定起来 ?
比如说, UI上面有一个button, 点击button完后(不是点下,而是点下弹起来后),触发对应的事件。
//创建一个UILayer层
UILayer* ul = UILayer::create();
//将UILayer层加入到当前的场景
this->addChild(ul, 1);
//使用json文件给Layer层添加CocoStudio生成的控件
ul->addWidget(CCUIHELPER->createWidgetFromJsonFile("EnterMenu/EnterMenu_1.json"));
// 获取到button控件
UIWidget* uw = ul->getWidgetByTag(18);
//uw->setTouchEnabled(true);
uw->addTouchEventListener(this, toucheventselector(HelloWorld::testButtonCallback));
void HelloWorld::testButtonCallback(CCObject*,TouchEventType tType )
{
if ( tType == TOUCH_EVENT_ENDED )
{
// 如果是button弹起来
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox(“You pressed the close button. Windows Store Apps do not implement a close button.”,“Alert”);
#else
CCMessageBox(“You pressed the close button.”,“Alert”);
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
#endif
}
}
cocos2dx 是 2.2 的版本。 button弹起后 然后也响应了相应的事件。
看了以前的帖子,说重写虚函数什么的,那意味着一个button就写一堆的虚函数了。
而且控件类型都是UIWidget, 这样重写虚函数是重写哪个类的呢?实在是没想明白是怎么做的。
大致上了一下UIWidget提供的那些借口,选了几个觉得像的,乱写了下,竟然也好使。
也不知道这么写好不好, 网上相关的例子太少了。
这个回调函数(void HelloWorld::testButtonCallback(CCObject*,TouchEventType tType ) )会传触摸事件类型(TouchEventType tType )
判断这个类型就好
typedef enum
{
TOUCH_EVENT_BEGAN,
TOUCH_EVENT_MOVED,
TOUCH_EVENT_ENDED,
TOUCH_EVENT_CANCELED
}TouchEventType;
在回调函数中, 根据不同的touch事件类型, 做相应的处理。
这是自问自答么?
哈哈 , 看半天没人理 , 就自己看代码研究了下。 然后就把结果贴出来了。 
7分钟回你帖子,你要说半天没人理? 
O(∩_∩)O哈! 看来我还是太浮躁了, 耐心不够好啊 。 
以后有啥问题果断先发帖, 然后直接私信喊你回帖。 哈哈。
欢迎骚扰~ 
button->addTouchEventListener(this, toucheventselector(MainScene::startButTouchEvent)); 我调用这个时会通不过,获取控件没问题,楼主知道怎么回事么
这是我的代码
auto uiLayer = GUIReader::getInstance()->widgetFromJsonFile(“MainUI_1.json”);
this->addChild(uiLayer);
auto button = uiLayer->getChildByName("startBut");
button->addTouchEventListener(this, toucheventselector(MainScene::startButTouchEvent));
这是输出信息
cocos2d: fullPathForFilename: No file found at /cc_2x2_white_image. Possible missing file.
file name ==
filename == MainUI_1.json
0x00ECFD94 处的第一机会异常(在 XZWCatchDoll.exe 中): 0xC0000005: 写入位置 0x0000021C 时发生访问冲突。
0x00ECFD94 处有未经处理的异常(在 XZWCatchDoll.exe 中): 0xC0000005: 写入位置 0x0000021C 时发生访问冲突。