小弟刚入职手游开发,项目要压包,我之前UI用cocostudio搭建的(2dx版本为2.3),发现ImageView没有提供使图片变灰的接口。跟入代码后发现,这个控件其实就是用组合方式封装了CCSprite,其成员变量是_imageRenderer,其接口中只能从文件读入纹理,想离屏渲染纹理貌似也不行(PS:虽然我还不知道在2dx里如何离屏渲染)。后来想过把ImageView删掉,加个CCSprite进去。但跟踪代码发现,Widget里只能添加Widget,万恶的虚函数CCNode::AddChild(CCNode*,int,int)。
莫非只能改引擎代码来做么?求众神支招,帮小弟度过试用期。
你好,在2.3版本是可以使用addNode方法添加node类型的节点,对于cocos2d-x3.0版本已经不再区分。
图片置灰多数会采用shader的方式。你可以将_imageRenderer取出来设置效果。
多谢版主大大回复,当时没仔细看
CCNode* getVirtualRenderer();这个函数可以把node取出来
但是,取出来之后又如何变灰呢?我现在就会重载draw加shader的方法,CCSprite里能直接加shader么?
setTexture设置一张灰图就行
cpptest里面的shader部分有详细的将sprite变灰的方法,可以直接照搬