cocos2d-x 界面编程二(cocostudio GUI的控件事件响应)

上篇说了cocostudioGUI的UI工程加载方法,这里接着继续说说控件的事件响应方法。

其实添加方法和以前的类似,只是在最新的cocos2d-x版本中,添加的方式稍微有些改变,就是直接从加载的UIWidget中取出对应控件,然后为其添加事件响应即可,看下面的代码:

	//这里有两种方式获取widget中包含的UI控件,一种是通过tag,一种是通过name
	m_pUiLayer->getWidgetByTag(3)->addReleaseEvent(m_pUiLayer, coco_pushselector(HelloWorld::outputInfo));
	m_pUiLayer->getWidgetByName("close_Button")->addReleaseEvent(m_pUiLayer, coco_pushselector(HelloWorld::outputInfo));
这是在加载了UILayer后,可以通过上面两种方式为这个UILayer中的控件添加事件,其中name,就是你在编辑器里为添加的按钮命名的名字属性。上面addReleaseEvent就是点击事件,其它还有移动、取消、按下等事件,这个可以自己看提示里显示的方法……然后为其添加一个回调函数即可达到我们要的效果,我是添加了一个log信息提示的回调函数:

void HelloWorld::outputInfo(CCObject* pSender){
	CCLog("It will close the window!");
}

运行工程后,当你点击关闭按钮时,就会在Log中看到“It will close the window!”这条信息。

下面再看个checkBox的示例,这里引用了官方示例里的代码,为checkBox添加了个点击事件导致选择状态改变的即时回调:

	//获取并监听checkBox状态
	UICheckBox* checkBox =(UICheckBox *)m_pUiLayer->getWidgetByTag(11);
	checkBox->addEventListenerCheckBox(m_pUiLayer, checkboxselectedeventselector(HelloWorld::selectedStateEvent));

回调函数里有控件自有的回调参数:

void HelloWorld::selectedStateEvent(CCObject *pSender, CheckBoxEventType type)
{
    switch (type)
    {
        case CHECKBOX_STATE_EVENT_UNSELECTED:
            //m_pDisplayValueLabel->setText(CCString::createWithFormat("Unselected")->getCString());
			// 这里依然用log输出
			CCLog("Unselected");
            break;
            
        case CHECKBOX_STATE_EVENT_SELECTED:
            //m_pDisplayValueLabel->setText(CCString::createWithFormat("Selected")->getCString());
			CCLog("Selected");
            break;
            
        default:
            break;
    }
}

两个状态返回参数可以从type中获取到,判断后进行输出……

其它的控件太多,限于篇幅就不写了,需要的话自己去官方示例里看这些控件的具体使用方法,这次就再上传个源代码吧:

http://download.csdn.net/detail/cyistudio/6780593


你可能感兴趣的:(UI,控件,cocos2d-x,界面,cocostudio)