Cocos2D Touch скорость движения - PullRequest
0 голосов
/ 23 марта 2011

Мне нужно получить скорость движения касания в cocos2d.любой API для этого?

1 Ответ

2 голосов
/ 23 марта 2011

Самый простой способ сделать это - сделать следующее:

  1. Конечно, зарегистрируйте CCLayer в качестве обработчика события касания и реализуйте начало касания,Функции перемещения и завершения.

  2. Создайте в своем классе 2 CGPoint переменных для хранения позиций касания CURRENT и PREVIOUS.Также создайте 2 CCTIme структуры для хранения времени опроса CURRENT и PREVIOUSLY.

  3. Установите расписание для обновления текущего времени (я сделал это в initлюбого соответствующего класса.

т.е.:

- (id)init {
    if((self = [super init])) {
        [self schedule:@selector(update:)];
        timeCURRENT = (ccTime)0;
    }
    return self;
}

-(void)update:(ccTime)deltaTime {
    timeCURRENT += deltaTime;
}

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

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {  
 touchCURRENT= [touch locationInView: [touch view]];  
 touchPREVIOUS = touchCURRENT;
 timePREVIOUS = timeCURRENT;
...

Затем при касании переместите PREVIOUS на CURRENT и установите CURRENT, используя ту же строку кода, что и выше

-(BOOL)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {   
    touchPREVIOUS = touchCURRENT;
    touchCURRENT= [touch locationInView: [touch view]];
    CGPoint deltaPosition = touchCURRENT - touchPREVIOUS;
    ccTime deltaTime = timeCURRENT - timePREVIOUS;
    timePREVIOUS = timeCURRENT;

Velocity= deltaPosition / deltaTime.

Обратите внимание, что вычитание CGPoint может работать не так, как указано выше, вам может потребоваться вычесть отдельные элементы и передать их в CGPoint фабричный метод.

...