(скрытый ввод cocos2d) при установке положения джойстика с помощью touchLocation спрайт не будет двигаться - PullRequest
0 голосов
/ 22 января 2012

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

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

    if ([self getChildByTag:kTagJoyStick] == nil) {
        [self addJoystickWithPosition:[Helper locationFromTouches:touches]];
    }

}


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

    if ([self getChildByTag:kTagJoyStick] != nil) {
        [self removeChildByTag:kTagJoyStick cleanup:YES];
    }

}
-(void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [self ccTouchesEnded:touches withEvent:event];
}

(ничего не делать в методе ccTouchesMoved)

методы обновления для джойстика:

-(void) sneakyUpdate {

    if ([self getChildByTag:kTagJoyStick] != nil) {
        if (joystick.velocity.x < 0) {
            [self controlLeft];
        }
        else if (joystick.velocity.x > 0) {
            [self controlRight];
        }
        else {
            [self controlStop];
        }

    }
    else {
        [self controlStop];
    }

}

, но в результате джойстик появится и автоматически удалится,но мой спрайт не будет двигаться.(Я установил точку останова, метод sneakyUpdate был вызван. Но joystick.velocity всегда равен 0. (и thumbSprite не следовал нашему пальцу. Пожалуйста, помогите мне.

update: и получаетсячто мне нужно использовать два пальца (один раз для прикосновения, и пусть появится джойстик, убрать палец, а затем использовать другой палец для управления джойстиком)

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Похоже, проблема в вашем классе джойстиков. Каждая реализация джойстика, которую я видел, использует метод ccTouchesBegan для активации джойстика, затем в методе ccTouchesMoved он проверяет, активирован ли он перед использованием. Проблема, которую я вижу, состоит в том, что вы создаете и добавляете джойстик ПОСЛЕ метода начала касаний, то есть ваш джойстик никогда не «активируется». Один из способов обойти это - выполнить все функции ccTouchesBegan джойстика в методе, который создает джойстик, и «активировать» его оттуда, передав ссылку на касание, которое будет его использовать.

0 голосов
/ 29 января 2012

Я не уверен на 100%, но я думаю, что вы должны использовать ccTouchBegan вместо ccTouchesBegan, потому что классы sneakyJoystick используют ccTouchBegan / Moved / Ended / Canceled.Кроме того, есть для одного прикосновения, это то, что вы хотите.
Я надеюсь, что это работает!

...