Cocos2d-x 3.0 - 新类的DrawNode()

时间:2015-05-11 18:13:43

标签: c++ cocos2d-x cocos2d-x-3.0

我会尽力解释它。我必须用维度,颜色,动作序列和一些bool等属性创建一类点,所以我创建了一个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));
Dot.cpp的init()中的

太简单了:/

(我用来制作正确的圆点的功能是什么?我在网上找到了很多但是不能说出哪一个是最好的/最新的......)

当我宣布一个新对象时,我应该在我的场景中这样做吗?像

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));

但是通过这种方式,它不会编译......

我需要一个基础来开始,请告诉我,我是否采取正确的方式,或者我是否必须以不同的方式重新启动以获取我的点对象...

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我在这里发现了我的错误:

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

我只需要替换Dot.h中类声明中的实现

class Dot : public cocos2d::Layer

class Dot : public cocos2d::DrawNode

非常感谢! :)