2013-04-18 1 views
1

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

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 express, и я хочу, чтобы этот проект был кросс-платформенным. Приложение hellolua, которое находилось в образцах, показало, что щелчки мыши бросают событие касания и заканчиваются координатами в консоли, хотя я использовал мою мышь. Вот почему я надеялся, что смогу сделать что-то подобное в CPP, за исключением того, что на экране отображаются координаты. Однако, используя этот код, я получаю статические значения для x и y, которые не меняются независимо от того, где я щелкнул.

+0

Что вы ожидаете? Чем он отличается от того, что вы ожидаете? Разум-чтение еще не придумано. ;) – LearnCocos2D

+0

ps: не упоминайте мышь/клик, это сбивает с толку, заставило меня думать, что вы делаете настольное приложение – LearnCocos2D

+0

Извините, я разъяснил свою рабочую среду и ожидания в редактировании. – user2264309

ответ

2

попробовать этот код:

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); 
} 
+0

не думал бы просто идти туда и обратно между пространствами GL и UI? – TankorSmash

+0

touch-> getLocation() возвращает точку в координатах GL, поэтому вы можете пропустить преобразование GL и просто вызвать convertToNodeSpace (touch-> getLocation()) – GameSalutes