Iphone 将BeginTouchs和EndTouchs转换为ccBeginTouch和ccEndTouch

Iphone 将BeginTouchs和EndTouchs转换为ccBeginTouch和ccEndTouch,iphone,cocos2d-iphone,touches,Iphone,Cocos2d Iphone,Touches,我正在将我正在开发的游戏从UIkit转换为coocos2d。使用UIKIT,我将使用下面的代码将触控事件传递给一个方法。Cocos2d中的等价物是什么 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // Save the position for (UITouch *touch in touches) { // Send to the dispatch method, whic

我正在将我正在开发的游戏从UIkit转换为coocos2d。使用UIKIT,我将使用下面的代码将触控事件传递给一个方法。Cocos2d中的等价物是什么

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // Save the position
    for (UITouch *touch in touches) {
        // Send to the dispatch method, which will make sure the appropriate subview is acted upon
        [self dispatchFirstTouchAtPoint:[touch locationInView:boardView] forEvent:nil];
    }
}

// Saves the first position for reference when the user lets go.
- (void) dispatchFirstTouchAtPoint:(CGPoint)touchPoint forEvent:(UIEvent *)event
{
    beginTouchPoint = touchPoint;
}

// Handles the continuation of a touch.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches) {
        // Send to the dispatch method, which will make sure the appropriate subview is acted upon
        [self dispatchTouchEndEvent:[touch view] toPosition:[touch locationInView:boardView]];
    }
}

-(void) dispatchTouchEndEvent:(UIView *)theView toPosition:(CGPoint)position
{   id  sender;
    int directionSwiped;
    int row,column;
    CGFloat xDelta = position.x - beginTouchPoint.x;
    CGFloat yDelta = position.y - beginTouchPoint.y;
        [self findSwipeDirectionWith: xDelta and: yDelta];

}
使用cocos2d的等效功能是什么

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // Save the position
    for (UITouch *touch in touches) {
        // Send to the dispatch method, which will make sure the appropriate subview is acted upon
        [self dispatchFirstTouchAtPoint:[touch locationInView:boardView] forEvent:nil];
    }
}

// Saves the first position for reference when the user lets go.
- (void) dispatchFirstTouchAtPoint:(CGPoint)touchPoint forEvent:(UIEvent *)event
{
    beginTouchPoint = touchPoint;
}

// Handles the continuation of a touch.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches) {
        // Send to the dispatch method, which will make sure the appropriate subview is acted upon
        [self dispatchTouchEndEvent:[touch view] toPosition:[touch locationInView:boardView]];
    }
}

-(void) dispatchTouchEndEvent:(UIView *)theView toPosition:(CGPoint)position
{   id  sender;
    int directionSwiped;
    int row,column;
    CGFloat xDelta = position.x - beginTouchPoint.x;
    CGFloat yDelta = position.y - beginTouchPoint.y;
        [self findSwipeDirectionWith: xDelta and: yDelta];

}

我试着自己解决这个问题,我在谷歌上花了几个小时,但我还没有想出一个可行的解决方案

我明白了。我发现,我忘记做的是补充:

self.isTouchEnabled = YES;
到层的init方法

完成后,以下代码对我有效(beginTouchPoint和endTouchPoint是类的属性):

}

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

    UITouch* myTouch = [touches anyObject];     
    CGPoint location = [myTouch locationInView: [myTouch view]];
    beginTouchPoint = [[CCDirector sharedDirector]convertToGL:location];    
}

    // Handles the continuation of a touch.*
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    static BOOL isFirstTouch = YES;
    UITouch* myTouch = [touches anyObject];
    int row,column;
    int directionSwiped;
    CGPoint location = [myTouch locationInView: [myTouch view]];    
    endTouchPoint = [[CCDirector sharedDirector]convertToGL:location];
    CGFloat xDelta = endTouchPoint.x - beginTouchPoint.x;
    CGFloat yDelta = endTouchPoint.y - beginTouchPoint.y;
    [self findSwipeDirectionWith: xDelta and: yDelta];