如何使用Cocos2D-X绘制线条?

时间:2012-07-19 12:20:27

标签: c++ cocos2d-x cocos2d-x-2.x

我一直在玩我的计算机上的Cocos2D-X,我已经在我希望能够构建它的所有设备上构建hello world程序。

我知道如何让程序显示一个精灵,并显示一个标签,但我还没有能够让程序画一条线。如何在Cocos2D-X中画一条线?

5 个答案:

答案 0 :(得分:10)

使用void ccDrawLine(const CCPoint& origin, const CCPoint& destination)

中声明的CCDrawingPrimitives.h函数

修改

我自己从未尝试过使用原语。但据我所知,cocos2d中的所有内容都是CCNode或它的子类。因此,您必须将代码放在某些draw或其子类的CCNode方法中。

答案 1 :(得分:7)

您必须在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));
}

并且记住图层必须为空,因为它会调用第一个绘图,然后它会绘制孩子,所以如果你有孩子,它会与你画的重叠。

Z顺序:)

所以在你的代码中你有类

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

以上代码将绘制您想要的内容。

答案 2 :(得分:7)

我找到了另一种在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));

答案 3 :(得分:2)

auto node = DrawNode::create();
node->drawLine(Vec2(200, 200), Vec2(200, 500), Color4F(1.0, 1.0, 1.0, 1.0));
this->addChild(node);

答案 4 :(得分:1)

cocos2d-x 3.0 alpha中,您可以使用

DrawPrimitives::drawLine(const cocos2d::Point &origin, const cocos2d::Point &destination);