Координаты мыши/касания в cocos2d-x

Я пытаюсь получить координаты xy, где я нажимаю, или еще лучше, где находится указатель мыши, чтобы я мог преобразовать их в char и отобразить на экране, и я помню, что что-то в hellolua кидал координаты щелчков и движений в то время как щелкнули как сенсорные движения в консоли, поэтому я подумал, что, может быть, я мог бы сделать что-то подобное в cpp с помощью команды cctouch getLocationInView();, и это то, что я сделал. В инициализации я объявляю

setTouchEnabled(true);

и где я пытаюсь получить сенсорные координаты, которые я использую

CCTouch pTouch;
CCPoint p = pTouch.getLocationInView();
p = CCDirector::sharedDirector()->convertToGL(p);
float x = p.x;
float y = p.y;

Однако это не работает, как я ожидаю, что это сработает. Кто-нибудь знает, как заставить координаты мыши/касания точно возвращаться в cocos2d-x(cpp)?

Изменить: извините, я должен был уточнить, я работаю над рабочим столом Windows 7 в экспресс-среде VisualStudio, и я хочу, чтобы этот проект был кросс-платформенным. Приложение hellolua, которое было в примерах, имело то, что щелчки мыши вызывали событие касания, начинающееся и заканчивающееся с координатами в консоли, даже если я использовал свою мышь. Вот почему я надеялся, что смогу сделать что-то подобное в CPP, за исключением того, что координаты будут напечатаны на экране. Однако, используя этот код, я бы получил статические значения для x и y, которые не изменились бы независимо от того, где я щелкнул.


person user2264309    schedule 18.04.2013    source источник
comment
что вы ожидаете? Чем он отличается от того, что вы ожидаете? Чтение мыслей еще не изобретено. ;)   -  person LearnCocos2D    schedule 18.04.2013
comment
PS: не упоминайте мышь/щелчок, это сбивает с толку, заставило меня подумать, что вы делаете настольное приложение   -  person LearnCocos2D    schedule 18.04.2013
comment
Извините, я уточнил свою рабочую среду и ожидания в редактировании.   -  person user2264309    schedule 18.04.2013
comment
Пробовали ли вы тот же код на симуляторе OS X и iOS или в новейшей версии cocos2d-x? Это должно быть проблемой, связанной с платформой. Если вы не можете найти его, сообщите об этом на форуме cocos2d-x.   -  person Reck Hou    schedule 20.04.2013


Ответы (1)


попробуйте этот код:

bool PickCard::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
    CCPoint touchLocation = touch->getLocationInView();
    touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation );
    touchLocation=convertToNodeSpace(touchLocation);
    CCLOG(" TouchLocation X=%f TouchLocation Y=%f",touchLocation.x,touchLocation.y);
}
person KARTHIK RA    schedule 06.01.2014
comment
не думали бы просто переключаться между пространствами GL и UI? - person TankorSmash; 16.02.2016
comment
touch->getLocation() возвращает точку в координатах GL, поэтому вы можете пропустить преобразование GL и просто вызвать convertToNodeSpace(touch->getLocation()) - person GameSalutes; 08.01.2018