它可能与这个question, 重复,但我不知道如何在我的应用中应用这种方法,以及我应该在cocos2d-x中使用哪种方法来绘制Bezier曲线。我的应用程序应该允许用户在触摸画布时绘制线条和曲线。我怎样才能做到这一点?使用cocos2d-x绘制光滑的贝塞尔曲线
2
A
回答
1
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方法被调用,你可能知道的。
您可以使用方法和成员变量来控制曲线形状。
4
从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));
相关问题
- 1. 平滑手绘贝塞尔曲线
- 2. 平滑贝塞尔曲线
- 3. 用Fabric.js绘制贝塞尔曲线
- 4. 与贝塞尔曲线绘制的UIView
- 5. SpriteKit - 逐渐绘制贝塞尔曲线
- 6. 绘制椭圆与二次贝塞尔曲线和三次贝塞尔曲线
- 7. 使用贝塞尔曲线
- 8. 如何在光栅中绘制反锯齿贝塞尔曲线?
- 9. 使用谷歌地图折线绘制贝塞尔曲线
- 10. 如何使用Python的PIL绘制贝塞尔曲线?
- 11. 使用贝塞尔曲线绘制螺旋
- 12. 如何使用贝塞尔曲线绘制B样条?
- 13. 使用C++的贝塞尔曲线opengl
- 14. 在QML中绘制虚线和点状的贝塞尔曲线
- 15. HTML5画布:用负载绘制的贝塞尔曲线
- 16. 用我的手指在iOS中绘制贝塞尔曲线?
- 17. 绘制超过3个控制点的贝塞尔曲线
- 18. 贝塞尔曲线计算
- 19. n阶贝塞尔曲线?
- 20. 在贝塞尔曲线之间绘制垂直线
- 21. 贝塞尔曲线和法国曲线
- 22. 如何用svg循环绘制贝塞尔曲线?
- 23. 绘制具有二次贝塞尔曲线的随机路径
- 24. 绘制贝塞尔曲线的最佳方法
- 25. 绘制组给点之间的贝塞尔曲线
- 26. OpenGL:如何绘制度数高于8的贝塞尔曲线?
- 27. 如何动态绘制“漂亮”的贝塞尔曲线?
- 28. 在OpenGL/GLSL中绘制贝塞尔曲线的内部阴影
- 29. 在贝塞尔曲线绘制的曲线上实现触摸方法
- 30. 在Actionscript中绘制三次贝塞尔曲线?
谢谢,但有传递一个点阵列这种方法的任何选项?因为我需要通过点数组来存储和重绘曲线。另一个,我在文档http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/d6/da4/group__global.html中看到这个警告:'警告 这个函数可能会很慢。仅用于调试目的。“我需要担心这个警告吗? – R4j
请检查CCDdrawprimitives.cpp中的函数'ccDrawQuadBezier'。所有细节都在那里。复制并制作您的版本。而且我认为glDrawArrays函数并没有那么糟糕。如果您怀疑,请将其进行归档 –