Cocos2d-x 自定义实现下拉列表框(两种实现方法)
在引擎中并没有提供相应的下拉列表控件实现,所以如果在实际应用中需要的话就要自己代码实现。
下面我介绍两种实现的方式,以供大家参考。
方法一:
这个方法我是参考了网上的一段代码,然后自己对代码进行部分的修改,下面贴出一个xcode中的下拉列表框样式:
下面先贴出自定义实现的效果图:
通常,一个下拉列表框都是这样的:
①有一个选中后的显示栏目;
②点击显示栏目后,显示下拉列表,选中的哪一个行会高亮显示;
③对下拉列表进行选择,选好后,下拉列表会消失,显示栏目显示选中的内容。
下面先贴出实现的代码:
void onSelected(CCObject* sender) 方法,并且关闭下拉列表,关闭下拉列表的是 void onClose() 方法,实际就是将menu删除。④下面简单罗列一下代码中提供的接口吧:
方法二:
这个是另一种样式的下拉列表框,下面同样给出xoode中的一个样式:
![]()
下面给出自定义实现的效果图:(图一)
点击后,弹出列表框:(图二)
选中第二行后:(图三)
大致样式还是差不多的吧,下面讲述一下如何实现的吧!
总体实现思路:
①这对第一个图(图一),其实就是一个menu,上面添加了一个label。
②点击了这个menu之后,就会出来一个列表,这个其实是一个自定义实现的sprite,而且可接收触摸消息。那么在对一行行的选项进行选择的时候就可以进行触摸检测,从而判断出是选中了哪一个行。
注意:由于图一中显示的是一个menu,那么其接收触摸消息的优先级是很高的,是 kCCMenuHandlerPriority,那么为了让menu上面的这个列表可以接收到触摸消息,那么其优先级级要比menu高,也就是 kCCMenuHandlerPriority-1
关于自定义sprite接收触摸消息的内容参考我的这篇博文:点击打开链接
③选择之后,通过Notification通知,对显示的label值进行修改。
下面展示一下代码吧: