出于美术资源包大小的考虑,我们认为单独提供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) …………