Cocos按钮置灰

前端之家收集整理的这篇文章主要介绍了Cocos按钮置灰前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

先贴代码

  1. function FreeCoinLayer:ensureBtn( btn,enable )
  2. print("FreeCoinLayer:ensureBtn")
  3. btn:setTouchEnabled( enable )
  4. btn:setBright( enable )
  5. if enable then
  6. btn:getVirtualRenderer():setState(0)
  7. else
  8. btn:getVirtualRenderer():setState(1)
  9. end
  10. --vr:setState(1)
  11. local children = btn:getChildren()
  12. for name,child in pairs( children ) do
  13. local vr = child:getVirtualRenderer()
  14. if enable then
  15. vr:setState( 0 )
  16. else
  17. vr:setState( 1 )
  18. end
  19. end
  20. end

简单介绍一下函数作用,参数分别是一个按钮对象以及一个是否要激活的一个开关。

首先是获取到这个按钮的渲染器,通过getVirtualRenderer。看一下这个函数的源码,我贴出来:

  1. Node* Button::getVirtualRenderer()
  2. {
  3. if (_bright)
  4. {
  5. switch (_brightStyle)
  6. {
  7. case BrightStyle::NORMAL:
  8. return _buttonNormalRenderer;
  9. case BrightStyle::HIGHLIGHT:
  10. return _buttonClickedRenderer;
  11. default:
  12. return nullptr;
  13. }
  14. }
  15. else
  16. {
  17. return _buttonDisabledRenderer;
  18. }
  19. }

再贴一下返回值的类型:

  1. Scale9Sprite* _buttonNormalRenderer;
  2. Scale9Sprite* _buttonClickedRenderer;
  3. Scale9Sprite* _buttonDisabledRenderer;

其实说白了返回的是一个九妹类型,通过这个对象的setState就可以设置相应的效果了,不需要重写shader。

我这个引擎用的是3.4

猜你在找的Cocos2d-x相关文章