Cocos2d iPhone v3.0 – Проведите пальцем вверх, чтобы выполнить действие

StackOverflow https://stackoverflow.com//questions/23047314

Вопрос

У меня возникли проблемы с настройкой касаний для смахивания вверх для выполнения действий.Я пытаюсь использовать приведенный ниже код, но он не распознает касания.

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

//Swipe Detection Part 1
firstTouch = location;

    CCLOG(@"touched");
}

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];


//Swipe Detection Part 2
lastTouch = location;

//Minimum length of the swipe
float swipeLength = ccpDistance(firstTouch, lastTouch);


CCActionJumpTo *jump1 = [CCActionJumpTo actionWithDuration:2 position:ccp(self.contentSize.width*.4,self.contentSize.height*.1) height:self.contentSize.height*.5 jumps:1];
[_fufunaken runAction:[CCActionRepeat actionWithAction:jump1 times:1]];


//Check if the swipe is an up swipe and long enough
if (firstTouch.y > lastTouch.y && swipeLength > 60) {
    [_fufunaken runAction:[CCActionRepeatForever actionWithAction:jump1]];
}

}

Когда я касаюсь экрана, он даже не говорит «прикоснулся», и в init включено взаимодействие с пользователем.Любая помощь будет оценена!

Это было полезно?

Решение

В cocos2d v3 нужно заменить все ccTouchesBegan/ccTouchesMoved/ccTouchesEnded к

-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
-(void) touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
-(void) touchEnded:(UITouch *)touch withEvent:(UIEvent *)event

Хорошей новостью является то, что вы можете получить текущее местоположение касания, просто используя следующую строку:

CGPoint touchPos = [touch locationInNode:self];

все это поэтому не требуется

/*
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
*/
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top