Creator 版本:v2.4.2 web和模拟器测试ok app未测试
/**
* 设置灰色滤镜
* @param node node节点 或 label、sprite组件
* @param gray true变灰
* @param children 子项是否变灰 默认false 只有node会有子项
*/
setGray(node: cc.Node | cc.Label | cc.Sprite, gray: boolean = true, children?: boolean): void {
let target: any = node
var material = cc.Material.createWithBuiltin(gray ? cc.Material.BUILTIN_NAME.GRAY_SPRITE : cc.Material.BUILTIN_NAME.SPRITE, 0)
material.define(“USE_TEXTURE”, true, 0);
if (node instanceof cc.Node) {
target = node.getComponent(cc.Sprite);
target && target.setMaterial(0, material);
target = node.getComponent(cc.Label);
target && target.setMaterial(0, material);
children && node.children.forEach(subNode => {
target = subNode.getComponent(cc.Sprite);
target && target.setMaterial(0, material);
target = subNode.getComponent(cc.Label);
target && target.setMaterial(0, material);
}, this)
} else {
target && target.setMaterial(0, material);
}
}
//给设置一个强类型 《any》cc.Material.BUILTIN_NAME.GRAY_SPRITE : 《any》cc.Material.BUILTIN_NAME.SPRITE
[USE_TEXTURE] define not found. 警告 的朋友 可以修改成这样
// var material = cc.Material.createWithBuiltin(gray ? cc.Material.BUILTIN_NAME.GRAY_SPRITE : cc.Material.BUILTIN_NAME.SPRITE, 0)
// material.define(“USE_TEXTURE”, true, 0);
var material = cc.Material.getBuiltinMaterial(gray ? cc.Material.BUILTIN_NAME.GRAY_SPRITE : cc.Material.BUILTIN_NAME.SPRITE);