for FadeIn, FadeOut => custom setOpacity
for change color => custom setColor (but you will change all shape draw by DrawNode to the same color (new color).
For example I custom DrawNode with MyDrawNode
MyDrawNode.h
#include "cocos2d.h"
class MyDrawNode : public cocos2d::DrawNode
{
public:
static MyDrawNode* create();
void setOpacity(GLubyte opacity) override;
void setColor(const cocos2d::Color3B &color) override;
};
MyDrawNode.cpp
#include "MyDrawNode.h"
MyDrawNode* MyDrawNode::create()
{
MyDrawNode* ret = new (std::nothrow)MyDrawNode();
if (ret && ret->init())
{
ret->autorelease();
}
else
{
CC_SAFE_FREE(ret);
}
return ret;
}
void MyDrawNode::setOpacity(GLubyte opacity)
{
DrawNode::setOpacity(opacity);
for (int i = 0; i < _bufferCount; i++)
{
_buffer[i].colors.a = opacity;
}
_dirty = true;
}
void MyDrawNode::setColor(const cocos2d::Color3B &color)
{
DrawNode::setColor(color);
for (int i = 0; i < _bufferCount; i++)
{
_buffer[i].colors.r = color.r;
_buffer[i].colors.g = color.g;
_buffer[i].colors.b = color.b;
}
_dirty = true;
}
Using…
MyDrawNode* draw = MyDrawNode::create();
draw->drawSolidCircle(Point(s.width/2, s.height/2), 200, 0, 32, Color4F(1, 0, 0, 1));
//// change Opacity...
// draw->setOpacity(100);
draw->runAction(FadeOut::create(5));
//// change color...
//draw->setColor(Color3B::BLUE);
draw->runAction(TintTo::create(1, Color3B::BLUE));
...
addChild(draw);
...