Я разрабатываю двумерную автомобильную игру с использованием Cocos2d-x, и у меня есть проблема. Я хочу использовать Box2D, чтобы упростить коллизии и управление движением, но до этого я хочу, чтобы мои 4 кнопки работали. Дело в том, что у меня есть что-то вроде этогоEventListener для кнопок
RaceScene.cpp
bool Race::init() {
//...
auto forwardArrow = MenuItemImage::create("forward_arrow.png", "forward_arrow.png", CC_CALLBACK_1(Race::forward, this));
forwardArrow->setAnchorPoint(Vec2(0,0));
forwardArrow->setPosition(Vec2(origin.x + visibleSize.width - forwardArrow->getContentSize().width*1.2 ,
origin.y + forwardArrow->getContentSize().height));
//...
}
void Race::forward(Ref* pSender)
{
/*MessageBox("YOU PRESSED THE FORWARD BUTTON","Alert");*/
}
Но я заметил, что это не так, потому что я не могу ни пресса более 1 кнопки в то время, или изменить скорость в зависимости от времени нажатия кнопки.
Итак, я просмотрел документацию Cocos и проверял документацию по Cocos, и все говорят об этом EventListeners, но я не могу найти, как добавить его к моей проблеме.
Мне не нужно обращаться с экранами экрана, мне нужно обращаться с каждым нажатием кнопки.
Спасибо.
Для виртуального dpad вы не можете использовать встроенную систему меню. Если у cocos2d-x есть CCButton, такой как cocos2d-swift, вы должны его использовать, иначе просто используйте события касания, проверьте, на какой кнопке прикосновение (если есть) и действуют соответственно. – LearnCocos2D
У меня есть 4 разных MenuItemImage, по одному для каждой кнопки. Дело в том, как я могу отличить, когда касание было на одной или другой кнопке? Я не знаю, как вызвать правильную функцию из EventListener. – jjimenezg93
Как я уже сказал, MenuItem * не будет работать на то, что вы пытаетесь выполнить. Регулярные события касания - это то, что вам нужно. – LearnCocos2D