出于美术资源包大小的考虑,我们认为单独提供DisabledImage是不划算的。
如果你是直接create CCMenuItemSprite的话,这个就比较简单了。
Cocos2dx现已提供CCGraySprite
menuItem->setDisabledImage(CCGraySprite::create(fileName));
然而,如果你跟我一样,是使用CocosBuilder来创建UI的话,有没有统一的方法来处理DisabledImage呢?
答案是肯定的。
以下为Lua代码:
function createDisabledImageIfNot(node)
if type(node.getDisabledImage) ~= 'function' then return end
local disabledImage = node:getDisabledImage()
-- 如果没有设置 disabled image
if not disabledImage then
-- 取得normal image
local normalSprite = tolua.cast(node:getNormalImage(), 'CCSprite')
if normalSprite then
-- 将normal image 整体变灰
local graySprite = CCGraySprite:createWithTexture(normalSprite:getTexture(), normalSprite:getTextureRect())
node:setDisabledImage(graySprite)
end
end
end
只要在初始化方法中调用上述方法即可。
createDisabledImageIfNot(ccbLayer.menuItem1)
createDisabledImageIfNot(ccbLayer.menuItem2)
…………
本文介绍了一种在Cocos2dx中为未设置禁用状态图像的菜单项自动生成灰色替代图像的方法,通过Lua脚本实现,适用于使用CocosBuilder创建UI的情况。
771

被折叠的 条评论
为什么被折叠?



