CCTouchesBegan - CCTouchesEnded需要两个坐标

时间:2011-07-16 18:39:32

标签: objective-c cocos2d-iphone uitouch uievent

首先,我是Cocos2D和Obj-C的新手所以我确实遇到过像这样的简单问题。 我的问题看起来像这样: 屏幕上有一个精灵,用户将不得不触摸它的顶部,同时仍然按下向上移动一点,然后释放触摸。 想象一个带帽子的玩家精灵,你必须触摸帽子并将手指向上移动到顶部以使他的帽子飞向那个方向。 什么是实现这个目标的最好方法?

到目前为止我得到的是:

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
        //other stuff
}

我是否需要创建另一种方法来确定CCTouchesBegan位置,然后将这些值提供给CCTouchesEnded方法,然后我计算角度并让帽子飞走? 或者我可以在上述方法中确定触摸开始的位置吗?

非常感谢您的回答:)

2 个答案:

答案 0 :(得分:1)

您发布的方法仅在触摸结束时显示。这意味着它只会在用户将手指从屏幕上移开时触发。如果这就是你想要的那么那就没问题了。 CGPoint变量“location”是您想要的点。

CGPoint是两个浮点值。你将拥有:

location.x
location.y

这不会告诉你触摸的起点。正如我所说,它只会在用户将手指从屏幕上移开时触发。如果您需要知道用户触摸屏幕的位置,还有另一种方法。以下是标准触摸方法:

// Touch first detected
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
// Touches moved
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
// User took finger off screen
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
// Touch was somehow interrupted
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

答案 1 :(得分:0)

UITouch *touch = [ touches anyObject];

CGPoint new_location = [touch locationInView: [touch view]];
new_location = [[CCDirector sharedDirector] convertToGL:new_location];
NSLog(@"y: %1f", new_location.x);
NSLog(@"x: %1f", new_location.y);