Как сделать строку с помощью Cocos2D-X?
Я играю с Cocos2D-X на своем компьютере, и у меня есть его, чтобы создать глобальную программу hello на всех устройствах, на которых я хотел бы построить его.
Я знаю, как заставить программу отображать спрайт и отображать метку, но мне не удалось просто заставить программу нарисовать линию. Как я могу нарисовать линию в Cocos2D-X?
Ответы
Ответ 1
использовать void ccDrawLine(const CCPoint& origin, const CCPoint& destination)
функцию, объявленную в CCDrawingPrimitives.h
Edit
Я никогда не пробовал использовать примитивы. Но поскольку я знаю, что все в cocos2d
отображается в CCNode
или подклассе. Поэтому вы должны поместить свой код внутри метода draw
для некоторого CCNode
или его подкласса.
Ответ 2
Вы должны использовать функцию 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));
}
И помните, что слой должен быть пустым, потому что он вызывает первую ничью, затем он рисует детей, поэтому, если у вас есть дети, он будет перекрывать то, что вы рисуете.
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));
}
}
Выше кода будет рисовать то, что вы хотите.
Ответ 3
Я нашел еще один простой способ рисовать линию в 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));
Ответ 4
auto node = DrawNode::create();
node->drawLine(Vec2(200, 200), Vec2(200, 500), Color4F(1.0, 1.0, 1.0, 1.0));
this->addChild(node);
Ответ 5
В cocos2d-x 3.0
alpha вы можете использовать
DrawPrimitives::drawLine(const cocos2d::Point &origin, const cocos2d::Point &destination);