gpt4 book ai didi

c++ - Cocos2d-x : How can I draw a resizing rectangle?

转载 作者:行者123 更新时间:2023-11-30 02:40:15 25 4
gpt4 key购买 nike

我正在使用 Cocos2d-x 3.4(出色的框架 BTW :))开发一个项目。我想知道如何绘制一个简单的半透明选区,您可以在 Windows 上看到相同的选区?

http://cdn.maximumpcguides.com/windows-7/wp-content/uploads/2010/11/use-translucent-select-rectangle-2.png

我尝试使用 DrawNode 类,但未能实现这一点:'(我希望有人能告诉我正确的方法,请:-)

最佳答案

使用 DrawNode 绘制非常简单。

在 onTouchBegan 事件上设置起点,在 onTouchMoved 事件上设置终点。

// 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();
}

关于c++ - Cocos2d-x : How can I draw a resizing rectangle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com