2013-04-18 177 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