Нарисуйте гладкую кривую Безье с cocos2d-x

Это может быть дубликат с этим вопрос,
но я не знаю, как применить этот подход в моем приложении, и какой метод я должен использовать в cocos2d-x, чтобы нарисовать кривую Безье. Мое приложение должно позволять пользователям рисовать линии и кривые, когда они касаются холста. Как я могу этого достичь?

2

Решение

в файле CCDrawPrimitives.cpp.

Вы можете использовать этот метод.

ccDrawCubicBezier
ccDrawQuadBezier

-MyClass::draw() {
glLineWidth(4.0f);
ccPointSize(4);

//Draw a blue quadratic bezier curve
ccDrawColor4B(0, 0, 255, 255);
ccDrawQuadBezier(ccp(90,0), ccp(200, 70), ccp(350,0), 12);

//Draw cubic red bezier curve
ccDrawColor4B(255, 0, 0, 255);
ccDrawCubicBezier(ccp(100,100), ccp(300,150), ccp(250,50), ccp(350,100), 12);

//Restore original values
glLineWidth(1);
ccDrawColor4B(255,255,255,255);
ccPointSize(1);
}

Каждый раз, когда вы перемещаете свои позиции касания, метод ccTouchesMoved вызывается, как вы, возможно, знаете.
Вы можете контролировать форму кривой, используя метод и переменные-члены.

1

Другие решения

В Cocos2dx v3.3 вы можете использовать DrawNode для рисования кривых Безье. Проверьте DrawPrimitivesTest.cpp, он очень прост в использовании.
Это только пример скрипта, взятого из вышеупомянутого файла. Вы можете использовать его где угодно в вашей сцене:

auto draw = DrawNode::create();
addChild(draw, 10);

auto s = Director::getInstance()->getWinSize();
draw->drawQuadBezier(Vec2(0, s.height), Vec2(s.width/2, s.height/2), Vec2(s.width, s.height), 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
draw->drawCubicBezier(VisibleRect::center(), Vec2(VisibleRect::center().x+30,VisibleRect::center().y+50), Vec2(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
5

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector