转发,请保持地址:http://blog.youkuaiyun.com/stalendp/article/details/9948545
虽然CCNodeRGBA,CCLayerRGBA,sprite等提供颜色和透明度的设置,但有时候要自定义控件,要自己去实现那些功能。比如,我要扩充一个CCSpriteBatchNode,同时要要具有颜色和透明度的设置,这个时候就需要自己动手了。
其实为自己的控件添加RGBA特性并不是很难,只要继承CCRGBAProtocol,然后把CCNodeRGBA的实现方案贴到新加的类中就可以了。不过这样不便于代码的重用,所以我在改造代码的过程中使用了“适配器设计模式”。 这也是这片文章要介绍的一点。
贴上我的设配器类:MyRGBAProtocolAdapter
class MyRGBAProtocolAdapter: public CCRGBAProtocol {
protected:
GLubyte _displayedOpacity, _realOpacity;
ccColor3B _displayedColor, _realColor;
bool _cascadeOpacityEnabled, _cascadeColorEnabled;
protected:
virtual CCArray* getRGBAChildren() = 0;
virtual CCNode* getRGBAParent() = 0;
public:
MyRGBAProtocolAdapter() :
_cascadeColorEnabled(true),
_cascadeOpacityEnabled(true),
_displayedOpacity(2

本文介绍了如何在Cocos2d-x中为自定义控件添加RGBA特性,通过继承`CCRGBAProtocol`并应用适配器设计模式,以实现颜色和透明度的设置,提高代码的重用性。文中提供了适配器类`MyRGBAProtocolAdapter`的示例。
最低0.47元/天 解锁文章
1882

被折叠的 条评论
为什么被折叠?



