想要在 cocos2d 3.9 中绘制手指移动的示例代码吗?
Want sample code for drawing on finger movement in cocos2d 3.9?
我们如何在 cocos2d 3.9 中实现这一点并解释
virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4
&transform, uint32_t flags) override;
此方法中的参数是什么?提前致谢。
您可以在 "cpp test" 中找到好的样本,它默认在 cocos2d-x 文件夹中提供。 运行 cpp 测试中名称为 "RenderTextureTest" 的项目。
如果您想以最简单的方式绘制手指移动,请使用 cocos2d::RenderTexture
,这是您可以在其中绘制的节点。
您的代码如下所示:
void TestScene::onTouchMoved(Touch * touch, Event* event)
{
Vec2 start = touch->getLocation();
Vec2 end = touch->getPreviousLocation();
// begin drawing to the render texture
_renderTexture->begin();
float distance = start.getDistance(end);
if (distance > 1)
{
Sprite * brushSprite = Sprite::create("Images/fire.png");
brushSprite->setColor(Color3B::RED);
brushSprite->setOpacity(20);
for (int i = 0; i < distance; i++)
{
float difx = end.x - start.x;
float dify = end.y - start.y;
float delta = (float)i / distance;
brushSprite->setPosition(start.x + (difx * delta), start.y + (dify * delta));
brushSprite->visit(); // Draw sprite to render texture
}
}
// finish drawing and return context back to the screen
_renderTexture->end();
}
对不起我的英语
我们如何在 cocos2d 3.9 中实现这一点并解释
virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override;
此方法中的参数是什么?提前致谢。
您可以在 "cpp test" 中找到好的样本,它默认在 cocos2d-x 文件夹中提供。 运行 cpp 测试中名称为 "RenderTextureTest" 的项目。
如果您想以最简单的方式绘制手指移动,请使用 cocos2d::RenderTexture
,这是您可以在其中绘制的节点。
您的代码如下所示:
void TestScene::onTouchMoved(Touch * touch, Event* event)
{
Vec2 start = touch->getLocation();
Vec2 end = touch->getPreviousLocation();
// begin drawing to the render texture
_renderTexture->begin();
float distance = start.getDistance(end);
if (distance > 1)
{
Sprite * brushSprite = Sprite::create("Images/fire.png");
brushSprite->setColor(Color3B::RED);
brushSprite->setOpacity(20);
for (int i = 0; i < distance; i++)
{
float difx = end.x - start.x;
float dify = end.y - start.y;
float delta = (float)i / distance;
brushSprite->setPosition(start.x + (difx * delta), start.y + (dify * delta));
brushSprite->visit(); // Draw sprite to render texture
}
}
// finish drawing and return context back to the screen
_renderTexture->end();
}
对不起我的英语