Я пытаюсь написать простую игру, используя библиотеку 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");
}
В моем Layer у меня есть функция для порождения экземпляра класса Letter:
{
CCLOG("new letter");
Letter* _letter = Letter::create();
addChild(_letter, 1);
}
И, конечно, в init () я создаю одну букву:
this->createLetter();
Теперь я хочу создать действие, которое запускается после касания, чтобы отправить некоторую информацию (int) на мой слой, уничтожить Sprite и запустить createLetter (); снова.
Как я могу это сделать? Я пытался создать CC_CALLBACK_1 и что-то еще, но я понятия не имею, что мне нужно делать. 🙁
Я не мастер C ++, но я думаю, что у меня есть базовые знания о C ++, я системный администратор, но я хотел бы попробовать что-то чистое.
Спасибо за помощь.
Используйте this-> getParent () в классе Latter для доступа к классу Layer, а затем вызовите любой написанный там метод, в том числе createLetter () или любой новый метод для передачи целого числа
YourLayerClass* layerObject = (YourLayerClass*)this->getParent();
layerObject->sendData(3);
layerObject->createLetter();
this->removeFromParentAndCleanup(true);
Других решений пока нет …