众所周知,CCSprite实现了CCRGBAProtocol,并且实现了setOpactiy函数。
现在我写了一个类,继承自CCSprite,并且override了setOpacity函数。
class DSSpriteHolder : public CCSprite{public: DSSpriteHolder(){}; virtual ~DSSpriteHolder(){};
virtual void setOpacity(GLubyte opacity);};
void DSSpriteHolder::setOpacity(GLubyte opacity){ CCLog(“sp1”); this->CCSprite::setOpacity(opacity); CCObject child; //CCRGBAProtocol pRGBAProtocol; CCARRAY_FOREACH(m_pChildren , child){ CCLog(“sp”); //pRGBAProtocol = (CCRGBAProtocol*)child; CCRGBAProtocol pRGBAProtocol = dynamic_cast<CCRGBAProtocol>(child); pRGBAProtocol->setOpacity(m_nOpacity); }}可是为什么用DSSpriteHolder的对象调用setOpacity函数时,却是使用的父类CCSprite的setOpacity,而不是自己的呢??