0

我正在尝试做的事情:将我触摸屏幕的坐标放入 2 个浮点数 x 和 y 中。

我的理解是,要获得我正在触摸的位置的坐标,我应该使用 getLocation()。所以我写了一小段代码:

CCTouch *pTouch;
CCPoint *xy = pTouch->getLocation();

我如何理解它(这很可能是错误的),这应该将变量 xy 设置为等于触摸屏幕位置的 opengl 坐标。如果是这种情况,我将如何将此 CCPoint 变量转换为一个或两个浮点数(x 和 y 浮点值)?

4

2 回答 2

1

这是你可以做的。在场景类的 init() 函数中添加调用

setTouchEnabled( true );

告诉 cocos2d-x 通过在场景中适当调用 ccTouchBegan、ccTouchMoved、ccTouchCancelled 和 ccTouchEnded 来告诉你触摸事件。现在,当这些函数被调用时,你会得到一个

cocos2d::CCTouch *touch

您可以使用它来获取触摸坐标。我在游戏中所做的是

CCPoint p = touch->getLocationInView();
p = CCDirector::sharedDirector()->convertToGL(p);

p 将包含触摸的坐标。您可以通过执行获取触摸的 x 和 y 坐标的浮点值

float x = p.x;
float y = p.y;

希望有帮助。:)

于 2013-04-17T09:58:39.823 回答
0

尝试这个:

float x,y;
x = *xy->x;
y = *xy->y;

PS:getLocationInView()比较推荐使用,因为这个函数会返回屏幕坐标中的位置,这是cocos2d-x主要使用的。以后不需要将 OpenGL 坐标转换为屏幕坐标。

读:

http://www.cocos2d-x.org/reference/native-cpp/de/d9b/classcocos2d_1_1_c_c_touch.html

于 2013-04-16T17:06:04.917 回答