簡體   English   中英

在Mac游戲中使用Cocos2d-X時,如何注冊手指是否觸摸(不按下鼠標按鈕)Apple觸控板(例如MacBook Pro)?

[英]How to register if finger touches (NOT pressing down as mouse button) the Apple trackpad (e.g. MacBook Pro) when using Cocos2d-X for Mac game?

我需要知道的是一根手指是否在觸摸板上或從觸摸板上抬起。 我想我必須使用NSTouch和NSTouchPhaseBegan和NSTouchPhaseEnded。 可能是一種方法,但是我不知道如何在我的Cocos2d-X C ++代碼中實現此Objective-C代碼。 誰能舉例說明如何將這個Objective-C代碼實現到Cocos2d-X項目中,因為它是自己的類,例如trackpad.mm和trackpad.h?

Cocos2d X具有用戶輸入的EventListner。 您可以檢查用戶是否觸摸了屏幕,用戶是否正在觸摸屏幕並將其拖動以及用戶是否已結束觸摸(將手指從屏幕上移開)

簡單的方法是使用事件列表器。

在.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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM