Cocos2d-x 3.0 — DrawNode() для нового класса

Я постараюсь объяснить это как можно лучше. Мне нужно создать класс точек с их свойствами, такими как размер, цвет, последовательность действий и некоторые логические значения, поэтому я создал файл Dot.h:

#include "cocos2d.h"
USING_NS_CC;
class Dot : public cocos2d::Layer{
public:
    virtual bool init();
    CREATE_FUNC(Whites);
private:
    bool circumstanceA = 1;
    bool circumstanceB = 0;
};

и файл Dot.cpp:

#include "Dot.h"
USING_NS_CC;
bool Dot::init()
{
    if ( !Layer::init() )
        return false;
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    auto scale = ScaleTo::create(0.5, (visibleSize.height / 6) + (arc4random() % (visibleSize.height / 15)) - visibleSize.height /30);
    auto scale_ease = EaseBackOut::create(scale->clone());
    return true;
}

Теперь, вот где я застрял. Я новичок в синтаксисе Cocos2d-x и начинающий программист, поэтому, если мой вопрос может показаться вам банальным, извините, но я здесь, чтобы учиться.

Что мне нужно, так это иметь возможность обращаться с объектами из этого класса, как с обычными спрайтами.

Во-первых, как мне сказать программе, что для каждого объекта Dot она должна нарисовать точку, чтобы «дополнить» этот объект? Прямо как спрайт. Просто добавьте что-то вроде

drawDot(Vec2((arc4random() % (int)(visibleSize.width - visibleSize.width / 6)) + visibleSize.width / 12, (arc4random() % (int)(visibleSize.width - visibleSize.width / 3.5)) + visibleSize.width / 7), 0, Color4F(255,255,255,255));

в init() Dot.cpp было бы слишком просто:/

(Является ли функция, которую я использовал для создания точки, правильной? Я нашел много в сети, но не мог сказать, какая из них лучшая/последняя...)

Должен ли я делать это в своей сцене, когда объявляю новый объект? Нравиться

Dot *myDot = Dot::create();
myDot->drawDot(Vec2((arc4random() % (int)(visibleSize.width - visibleSize.width / 6)) + visibleSize.width / 12, (arc4random() % (int)(visibleSize.width - visibleSize.width / 3.5)) + visibleSize.width / 7), 0, Color4F(255,255,255,255));

Но таким образом он не будет компилироваться...

Мне нужна база для начала, скажите, пожалуйста, правильно ли я иду или мне нужно перезапустить по-другому, чтобы получить свои точечные объекты...

Большое спасибо!


person itsmeciao    schedule 11.05.2015    source источник


Ответы (1)


Я нашел свою ошибку здесь:

http://discuss.cocos2d-x.org/t/how-to-properly-subclass-drawnode/19090

Мне просто нужно было заменить реализацию в объявлении класса в Dot.h

От

class Dot : public cocos2d::Layer

to

class Dot : public cocos2d::DrawNode

Спасибо, в любом случае! :)

person itsmeciao    schedule 11.05.2015