读书人

Cocos2d-x 自定义实现在拉列表框(两

发布时间: 2013-10-25 14:36:53 作者: rapoo

Cocos2d-x 自定义实现下拉列表框(两种实现方法)

在引擎中并没有提供相应的下拉列表控件实现,所以如果在实际应用中需要的话就要自己代码实现。

下面我介绍两种实现的方式,以供大家参考。


方法一:

这个方法我是参考了网上的一段代码,然后自己对代码进行部分的修改,下面贴出一个xcode中的下拉列表框样式:

Cocos2d-x  自定义实现在拉列表框(两种实现方法)

下面先贴出自定义实现的效果图:

Cocos2d-x  自定义实现在拉列表框(两种实现方法)

通常,一个下拉列表框都是这样的:

①有一个选中后的显示栏目;

②点击显示栏目后,显示下拉列表,选中的哪一个行会高亮显示;

③对下拉列表进行选择,选好后,下拉列表会消失,显示栏目显示选中的内容。


下面先贴出实现的代码:

void onSelected(CCObject* sender) 方法,并且关闭下拉列表,关闭下拉列表的是 void onClose() 方法,实际就是将menu删除。

④下面简单罗列一下代码中提供的接口吧:


方法二:

这个是另一种样式的下拉列表框,下面同样给出xoode中的一个样式:

Cocos2d-x  自定义实现在拉列表框(两种实现方法) Cocos2d-x  自定义实现在拉列表框(两种实现方法)

下面给出自定义实现的效果图:(图一)

Cocos2d-x  自定义实现在拉列表框(两种实现方法)

点击后,弹出列表框:(图二)

Cocos2d-x  自定义实现在拉列表框(两种实现方法)

选中第二行后:(图三)

Cocos2d-x  自定义实现在拉列表框(两种实现方法)

大致样式还是差不多的吧,下面讲述一下如何实现的吧!

总体实现思路:

①这对第一个图(图一),其实就是一个menu,上面添加了一个label。

②点击了这个menu之后,就会出来一个列表,这个其实是一个自定义实现的sprite,而且可接收触摸消息。那么在对一行行的选项进行选择的时候就可以进行触摸检测,从而判断出是选中了哪一个行。

注意:由于图一中显示的是一个menu,那么其接收触摸消息的优先级是很高的,是 kCCMenuHandlerPriority,那么为了让menu上面的这个列表可以接收到触摸消息,那么其优先级级要比menu高,也就是 kCCMenuHandlerPriority-1

关于自定义sprite接收触摸消息的内容参考我的这篇博文:点击打开链接

③选择之后,通过Notification通知,对显示的label值进行修改。


下面展示一下代码吧:





读书人网 >操作系统

热点推荐