2013-04-18 209 views
1

我想獲得xy座標點,或者更好的鼠標指針所在的位置,這樣我就可以將它們轉換爲字符並將它們顯示在屏幕上,並且我記得在hellolua扔點擊和移動的座標時點擊觸摸動作進入控制檯,所以我想也許我可以用cctouch命令getLocationInView()來做類似的事情,這就是我所做的。 在初始化,我宣佈鼠標/觸摸座標在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)中準確返回?

編輯:對不起,我應該澄清,我正在VisualStudio快速環境中的Windows 7桌面上工作,我希望這個項目是跨平臺的。在樣本中的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