全国哀悼的时候,需要游戏背景变灰.如果图片重新输出太多,太费时,不现实,后来利用了button的自带置灰功能.
主要克服2个问题.1是层级问题,2是监听图片变化.这里只处理了位置属性.如其他缩放等属性有需要的自行同步.
var setImageGray = function (node) {
var _grayImg = node.getChildByName("_grayImg")
if(_grayImg){
_grayImg.loadTextures(node.getRenderFile().file,node.getRenderFile().file,"");
_grayImg._lastImgPath = node.getRenderFile().file;
}else{
var button = new ccui.Button(node.getRenderFile().file,node.getRenderFile().file);
button.setTouchEnabled(false);
button.setBright(false);
button.setName("_grayImg");
button.scheduleUpdate();
button._lastImgPath = node.getRenderFile().file;
button.update = function () {
if(button.getParent().getRenderFile().file != button._lastImgPath){
setImageGray(button.getParent());
}
}
button.setPosition(node.width/2,node.height/2)
node.addChild(button,-1);
node.getVirtualRenderer().setVisible(false);
}
};
使用的时候setImageGray(imageView)