问题
I'm working on a project with Cocos2d-x 3.4 (wonderful framework BTW :) ). I was wondering how I can draw a simple translucence selection, the same selection you can see on Windows ?
http://cdn.maximumpcguides.com/windows-7/wp-content/uploads/2010/11/use-translucent-select-rectangle-2.png
I tried to use the DrawNode class, but failed to achieve this :'( I hope that someone can show me the right way to do it, please :-)
回答1:
It's pretty easy to draw with DrawNode.
Set the origin point on onTouchBegan event and set the destination point on onTouchMoved event.
// HelloWorld.h
class HelloWorld : public Layer{
public:
...
bool onTouchBegan(const Touch *touch, Event *event);
void onTouchMoved(const Touch *touch, Event *event);
void onTouchEnded(const Touch *touch, Event *event);
protected:
Vec2 _originPoint;
Vec2 _destinationPoint;
DrawNode *_drawNode;
};
// HelloWorld.cpp
bool HelloWorld::init()
{
if ( !Layer::init() ) return false;
// Add touch listener
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
// Create the draw node
_drawNode = DrawNode::create();
addChild(_drawNode);
return true;
}
bool HelloWorld::onTouchBegan(const cocos2d::Touch *touch, cocos2d::Event *event)
{
_originPoint = touch->getLocation();
_destinationPoint = _originPoint;
return true;
}
void HelloWorld::onTouchMoved(const cocos2d::Touch *touch, cocos2d::Event *event)
{
_destinationPoint = touch->getLocation();
_drawNode->clear();
_drawNode->drawSolidRect(_originPoint, _destinationPoint, Color4F(0,0,1,0.2));
_drawNode->drawRect(_originPoint, _destinationPoint, Color4F::BLUE);
}
void HelloWorld::onTouchEnded(const cocos2d::Touch *touch, cocos2d::Event *event)
{
_drawNode->clear();
}
来源:https://stackoverflow.com/questions/29062923/cocos2d-x-how-can-i-draw-a-resizing-rectangle