cocos2d-x从child运行父操作

时间:2016-02-03 16:44:55

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

我尝试使用cocos2d-x库编写一个简单的游戏。

我创建了一个类(名为Letter),用随机字母作为标签生成sprite并添加一个监听器,因为我想捕获触摸事件。 我有一个功能:

listener->onTouchEnded = [=](cocos2d::Touch* touch, cocos2d::Event* event)
{
    CCLOG("press");
    Letter::touchEvent(touch, event);
};

和行动:

void Letter::touchEvent(cocos2d::Touch* touch, cocos2d::Event* event)
{
    this->removeFromParentAndCleanup(true);
    CCLOG("touched MySprite");
}

在我的图层中,我有一个函数来生成Letter类的实例:

{
    CCLOG("new letter");
    Letter* _letter = Letter::create();

    addChild(_letter, 1);
}

当然在init()中我创建了一个字母:

this->createLetter();

现在,我想创建一个在触摸后运行的动作,将一些信息(int)发送到我的Layer,销毁Sprite并运行createLetter();试。

我该怎么做?我尝试创建CC_CALLBACK_1,但我不知道自己需要做什么。 :(

我不是C ++大师,但我认为我是关于C ++的基本知识,我是系统管理员,但我想尝试网络。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在Latter类中使用this-> getParent()来访问Layer类,然后调用任何写入的方法,包含createLetter()或任何传递整数的新方法。

YourLayerClass* layerObject = (YourLayerClass*)this->getParent();
layerObject->sendData(3);
layerObject->createLetter();
this->removeFromParentAndCleanup(true);