Как зарегистрироваться, если палец касается (НЕ нажимает вниз как кнопка мыши) трекпада Apple (например, MacBook Pro) при использовании игры Cocos2d-X для Mac?
Все, что мне нужно, это знать, касается ли один палец или поднят с трекпада. Я думаю, что я должен использовать NSTouch и NSTouchPhaseBegan и NSTouchPhaseEnded. Это, вероятно, способ сделать это, но я не знаю, как реализовать этот код Objective-C в моем коде Cocos2d-X C++. Может ли кто-нибудь привести пример того, как внедрить этот код Objective-C в проект Cocos2d-X как его собственный класс, например, trackpad.mm и trackpad.h?
1 ответ
Cocos2d X имеет пользовательский ввод EventListner. Вы можете проверить, касался ли пользователь экрана, пользователь касается экрана, перетаскивая его, и пользователь нажал кнопку "Завершить касание" (поднял палец с экрана).
Простой способ сделать это - использовать Event Listner.
Определите это в.H файле
cocos2d::EventListenerTouchOneByOne *_touchListener;
bool onTouchBegan(cocos2d::Touch*, cocos2d::Event*);
void onTouchEnded(cocos2d::Touch*, cocos2d::Event*);
void onTouchMoved(cocos2d::Touch*, cocos2d::Event*);
Теперь в вашем.cpp файле после метода Init
_touchListener = EventListenerTouchOneByOne::create();
_touchListener->onTouchBegan = CC_CALLBACK_2(GamePlayScene::onTouchBegan, this);
_touchListener->onTouchEnded = CC_CALLBACK_2(GamePlayScene::onTouchEnded, this);
_touchListener->onTouchMoved = CC_CALLBACK_2(GamePlayScene::onTouchMoved, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(_touchListener, this);
Определите это 3 метода в коде
// trigger when you push down
bool GamePlayScene::onTouchBegan(Touch* touch, Event* event)
{
return true;
}
// trigger when moving touch
void GamePlayScene::onTouchMoved(Touch* touch, Event* event)
{
}
// trigger when you let up
void GamePlayScene::onTouchEnded(Touch* touch, Event* event)
{
//Code to Get Touch Location where user have ended touch
Point location = touch->getLocationInView();
location = Director::getInstance()->convertToGL(location);
CCLOG("Position x -> %f , y -> %f",location.x,location.y);
}