我看到创建有一个接口可以将精灵置灰,但是如果一个按钮想在不可点击状态的时候,disable图片显示成灰色,怎么操作?我看了一下UIButton没有直接用精灵来更新state image的!有没有一种方法直接将按钮搞成灰色!?
这个有个直觉的办法,就是遍历子节点然后tolua.type()看看是不是精灵然后变灰。。这是我看到你这问题的一个直觉。
简单直接的方式是,button创建是第3个参数就是禁用时的图片,setBright(false)可以让button显示禁用的图片
local vertDefaultSource =
attribute vec4 a_position;
attribute vec2 a_texCoord;
attribute vec4 a_color;
#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
varying mediump vec2 v_texCoord;
#else
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = CC_PMatrix * a_position;
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}
]]
local pszFragSource =
#ifdef GL_ES
precision mediump float;
#endif
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
void main(void)
{
vec4 c = texture2D(CC_Texture0, v_texCoord);
gl_FragColor.xyz = vec3(0.4*c.r + 0.4*c.g +0.4*c.b);
gl_FragColor.w = c.w;
}
]]
local pProgram = cc.GLProgram:createWithByteArrays(vertDefaultSource, pszFragSource)
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION)
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR)
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_FLAG_TEX_COORDS)
pProgram:link()
pProgram:updateUniforms()
node:setGLProgram(pProgram)
印象quick的filter好像有这个功能,楼主查查看
忘说了我的是2.2.5,你这些代码在2.2.5上面也可以? local pProgram = cc.GLProgram:createWithByteArrays(vertDefaultSource, pszFragSource) 这些接口都没看到啊!
2.2.5 就用 filter 吧,
我提供的是 3.x 版本的
既然是按钮,你初始化按钮的时候给disable状态传个不可点的灰色图片不就好了撒