在游戏开发中我们有时需要在Cocos2d-x中使用tipx功能,本篇教程将教你如何在Cocos2D-X中轻松实现tips功能。
tips的行为很简单:点击某个node(我们不妨称它为target_node)触发,当点击区域在target_node范围时出现tips,否则隐藏tips(有些情况需要指定有效点击范围不在某些node中,我们把这些node称为exclude_nodes);当target_node位于屏幕左半边时,tips出现在target_node右侧;否则tips就出现在target_node左侧,tips和target_node有一个固定的水平间距(我们不妨定义为DEFAULT_TIPS_DIST);tips和target_node底部对齐,但tips不能超过屏幕范围。
不废话,先上代码:
上面的代码基本是很简单的,除了有几点需要额外说明一下:
1.几处调用到performWithDelay的地方。这是因为我们用target_node的WorldSpace坐标来确定tips的位置,当target_node位于某个可滚动的node(如ScrollView)中时,需要延迟到下一帧才能拿到它正确的WorldSpace坐标,所以我们用了quickx定义的Node:performWithDelay来做延时。之所以用这个函数而不用scheduler,是因为它在Node的生命周期中,我们不需要担心如何去安全销毁scheduler所产生的handler。事实上我们只要看一下quickx定义在NodeEx.lua中的Node:performWithDelay就一目了然了:
2.我们指定target_node在收到exit事件时隐藏tips,这是因为target_node可能在某些ClippingNode(如ScrollView)中,当它超出区域不再显示时,tips也不应该被显示。
3.当同一个位置有多个具有tips行为的target_node时,需要判断当前的target_node是否有显示,这需要回溯看父节点的visibility,getCasCADeVisibility定义如下: