11

我一直在我的电脑上玩 Cocos2D-X,我已经得到它来在我希望能够构建它的所有设备上构建 hello world 程序。

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

4

5 回答 5

10

使用void ccDrawLine(const CCPoint& origin, const CCPoint& destination)声明的函数CCDrawingPrimitives.h

编辑

我自己从未尝试过使用原语。但据我所知,其中的所有内容cocos2d都呈现为可见CCNode或它的子类。所以你必须把你的代码放在draw一些方法CCNode或它的子类中。

于 2012-07-19T12:23:54.987 回答
7

您必须ccDrawLine在 draw() 中使用函数

例子

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

记住 layer 必须是空的,因为它调用 first draw next 它会绘制孩子,所以如果你有孩子,它会重叠你绘制的内容。

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

上面的代码会画出你想要的。

于 2012-11-11T06:25:32.997 回答
7

我发现了另一种在 CCLayer 中画线的简单方法。Cocos2d-x 有一个名为 CCDrawNode 的类。您可以在此处查看参考。并且非常容易使用该功能:

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));
于 2013-11-26T13:31:25.813 回答
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);
于 2015-12-18T11:11:50.153 回答
1

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

DrawPrimitives::drawLine(const cocos2d::Point &origin, const cocos2d::Point &destination);
于 2013-12-24T09:54:57.383 回答