我一直在电脑上玩弄Cocos2D-X,我已经能够在我想要构建它的所有设备上构建hello world程序。
我知道如何让程序显示精灵和标签,但是我一直没有办法让程序绘制一条线。我该如何在Cocos2D-X中绘制一条线?
我一直在电脑上玩弄Cocos2D-X,我已经能够在我想要构建它的所有设备上构建hello world程序。
我知道如何让程序显示精灵和标签,但是我一直没有办法让程序绘制一条线。我该如何在Cocos2D-X中绘制一条线?
使用在CCDrawingPrimitives.h
中声明的void ccDrawLine(const CCPoint& origin, const CCPoint& destination)
函数。
编辑
我自己从未尝试过使用基本图形。但是,据我所知中的所有东西都是通过CCNode
或其子类进行渲染的。因此,您必须将代码放置在某个CCNode
或其子类的draw
方法内。
在draw()函数中必须使用ccDrawLine
函数。
示例:
void GameLayer::draw()
{
//red line from bottom left to top right corner
cocos2d::ccDrawColor4F(1.0f, 0.0f, 0.0f, 1.0f);
cocos2d::ccDrawLine(ccp(0,0), ccp(100, 100));
}
class MyLayer : public CCLayer
{
... //your code
init()
{
CCLayer* pLayer = new GameLayer(); //It will be debug layer :)
addChild(pLayer);//Alse you can set here Z order.
pLayer->release();
}
virtual void draw()
{
//red line from bottom left to top right corner
ccDrawColor4F(1.0f, 0.0f, 0.0f, 1.0f);
ccDrawLine(ccp(0,0), ccp(100, 100));
}
}
draw()
方法在最新版本中已经被更改。请参考http://stackoverflow.com/questions/23557033/cocos2d-x-v3-cannot-override-forward-function-draw - DLight我发现另一种在CCLayer中绘制线条的简单方法。Cocos2d-x有一个名为CCDrawNode的类。您可以在此处查看参考here。而且,使用该函数非常容易:
void drawSegment(const CCPoint & from,
const CCPoint & to,
float radius,
const ccColor4F & color
)
小例子:
CCDrawNode* node = CCDrawNode::create();
addChild(node,10);//Make sure your z-order is large enough
node->drawSegment(fromPoint,toPoint,5.0,ccc4f(180,180,180,100));
auto node = DrawNode::create();
node->drawLine(Vec2(200, 200), Vec2(200, 500), Color4F(1.0, 1.0, 1.0, 1.0));
this->addChild(node);
DrawPrimitives::drawLine(const cocos2d::Point &origin, const cocos2d::Point &destination);
DrawPrimitives::drawLine(const cocos2d::Point &origin, const cocos2d::Point &destination);
无法正常工作。请参考https://dev59.com/X33aa4cB1Zd3GeqPitnk#22724319。 - John
this->colorLayer->initWithColor( ccc4( 100, 100, 100, 255 ) )
,所以由于Z-order,我没有看到任何用ccDrawLine绘制的东西。然后我只是将其更改为:this->colorLayer->init();
,现在一切都显示正常 :) - JavaRunner