我已经完成了关于堆栈溢出和其他地方的cocos2d-x相关的所有自定义绘制问题,我只想知道是否可以覆盖CCSprite中的绘制函数,而不是CCLayer。我想绘制一个圆角矩形。我习惯使用libgdx和XNA中的spriteBatches来控制屏幕上绘制的内容(RIP :()。我对于如何为我的精灵对象进行自定义绘制有点迷茫。以下是我所拥有的而且它没有工作。
// object.h
private:
std::string _colourLabel;
int width;
int height;
cocos2d::Vec2 position;
public:
PLOPPP(std::string colour, cocos2d::Vec2 pos, int width, int height);
virtual void draw(cocos2d::Renderer *renderer, const cocos2d::kmMat4 &transform, bool transformUpdated);
void onDraw(const Mat4 &transform, uint32_t flags);
//object.cpp
void PLOPPP::draw(cocos2d::Renderer* renderer, const cocos2d::kmMat4& transform, bool transformUpdated)
{
cocos2d::ccDrawColor4F(1.0f, 0.0f, 0.0f, 1.0f);
cocos2d::ccDrawLine(ccp(0, 0), ccp(100, 100));
}
void PLOPPP::onDraw(const Mat4 &transform, uint32_t flags)
{
cocos2d::ccDrawColor4F(1.0f, 0.0f, 0.0f, 1.0f);
cocos2d::ccDrawLine(ccp(0, 0), ccp(100, 100));
}
我也在这两种方法中都设置了断点,但从未调用过。我还尝试使用sprite-> visit()方法将渲染组件引导到onDraw方法,如其他问题所建议的那样。 Cocos有一个可怕的文档,所以我使用他们的测试项目并读取头文件。我看到有一种绘制方法可以覆盖,但它没有击中。我在C ++方面不是很有经验,但我对编程概念和编写游戏有很好的把握。因此,您可以使用任何用于向其他程序员解释的术语。
我想使用CCsprite的原因是为了获得操作的好处。我也尝试使用CCNode类作为基础,但它仍然没有命中。我不想让每个对象成为一个层,因为这完全违背了在一个图层上绘制游戏中的对象的概念。如果有人可以建议任何方式我可以绘制自定义形状作为精灵,这也受到应用于它的动作的影响。这将不胜感激。
如果您认为我可以从其他帖子中受益,请指出它。这应该不是一个困难的过程,但似乎占用了我很多时间。如果我能画一条线,我将能够完成其余的挑战。我只是想画一些习惯。