最新文章
AppMobi发布HTML 5开发工具XDK
03-26 11:55
jqGrid的重要选项详解
03-26 11:52
解说HTML 5 语义化
03-26 11:50
HTML/CSS一些需要注意的基础知识
03-26 11:47
分享10个web前端简单实用的jQuery代码片段
03-26 11:42
分享七大无需编程的DIY开发工具
03-26 11:33
解说cocos2d-x lua setIsVisible问题
在制作基于Cocos2d-x的SLG游戏时,游戏开发过程中常常会涉及到按钮的隐藏、显示、置灰以及设置为不可点击等操作。下面我们来看一段代码:
self:getBtn("lingqu"):setIsVisible(true)
self:getBtn("lingqu"):setIsGrey(true)
self:getBtn("lingqu"):setIsTouchEnable(false)
这段代码存在一个很大的隐患。如果我们将代码的执行顺序调整为如下形式:
self:getBtn("lingqu"):setIsGrey(true)
self:getBtn("lingqu"):setIsTouchEnable(false)
self:getBtn("lingqu"):setIsVisible(true)
就会出现问题,按钮的置灰和不可点击状态有时会失效。经过分析,问题的根源在于setIsVisible方法的调用顺序。当我们将setIsVisible(true)后置时,在这之前对该按钮所做的操作(如置灰和设置不可点击)可能会被忽略。
这是因为setIsVisible方法在某些情况下会重置按钮的状态,导致之前的设置失效。在Cocos2d-x的底层实现中,当一个节点的可见性被改变时,可能会触发一系列的重绘和状态重置操作,从而影响到之前已经设置好的属性。
所以,在使用Cocos2d-x Lua进行游戏开发,涉及到按钮的显示、置灰和设置可点击性等操作时,一定要注意setIsVisible方法的调用顺序,避免出现类似的问题,以免给自己的开发工作带来不必要的麻烦。希望大家在开发过程中能够留意这一点,避免被这个“坑”所困扰。