2016-02-03 3 views
0

Я пытаюсь написать простую игру, используя библиотеку cocos2d-x.cocos2d-x Запуск родительского действия от ребенка

Я создал класс (с именем Letter), чтобы создать спрайт со случайной буквой в качестве метки и добавить слушателя, потому что я хочу поймать события касания. У меня есть функция:

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() i создать одну букву:

this->createLetter(); 

Теперь я хочу создать действие, которое запускается после нажатия, чтобы отправить некоторую информацию (int) на мой слой, уничтожить Sprite и запустить createLetter(); еще раз.

Как это сделать? Я попытался создать CC_CALLBACK_1 и кое-что, но у меня нет идеи, что мне нужно сделать. :(

Я не C++ мастер, но я думаю, что я базовые знания о C++, я системный администратор, но я хотел бы попробовать что-то сеть.

Спасибо за помощь.

ответ

1

Пользователь this-> GetParent() в последний класс для доступа к классу слоя из, а затем вызвать любой метод там написано incuding createLetter() или любой новый метод, чтобы пройти целое число.

#

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

Спасибо лет u, он работает. Теперь мне нужно исправить проблему с ошибкой сегментации после удаления моего спрайта. :) – esio

+0

Не могли бы вы подробнее рассказать о своей новой проблеме? –

+0

Да, конечно. Я изменил свой код, как вы предлагаете. Это работает впервые, но второй или третий раз, когда я нажимаю, у меня есть фага сегментации. Я еще не запускал gdb для отладки этой проблемы. Если я не удаляю объект, все будет работать, но у меня много спрайтов. Я тестирую этот код на Linux. Я не тестировал Android. Благодарим вас за внимание и готовность помочь. Мило. – esio