IOS Sparrow Framework: как предотвратить двойное касание - PullRequest
4 голосов
/ 15 августа 2011

Я сделал текст «игра окончена» в конце игры и добавил addeventlistener в касание self.stage.когда это коснулось, он должен выполнить функцию события, которая загружает первый экран игры.однако на первом экране в середине экрана я нажимаю, чтобы воспроизвести текст, который имеет собственное сенсорное событие.

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

-Я не думаю, что обработчик события click для игры остается, потому что я использую [self removeAllChildren] при запуске игры.Кроме того, я тестировал во время игры, щелкая в той же области и правильно не записывая события касания для клика, чтобы играть.

Редактировать:

Я сделал обходной путь для этого, но не уверен, что этооптимальное решение:

Я сделал запуск одним касанием через некоторый промежуток времени, используя NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(attachEventToStart:) userInfo:startTextField repeats:NO];

, затем в attachEventToStart:

-(void)attachEventToStart:(NSTimer *)theTimer
{
    SPTextField *startTextField = [theTimer userInfo];
    [startTextField addEventListener:@selector(gameStartOnTouch:) atObject:self forType:SP_EVENT_TYPE_TOUCH];
}

это сработало, если кто-нибудьесть лучшее решение было бы здорово

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Я нашел лучшую альтернативу, чем таймер.

Мне нужно использовать SPTouchPhaseEnded, поэтому я добавил следующие строки в обратный вызов события,

SPTouch *touchEnded = [[event touchesWithTarget:self andPhase:SPTouchPhaseEnded] anyObject];
if (!touchEnded)
     return;
SOME GAME START CODE HERE...

Теперь действие происходит только по окончании события касания, поэтому оно не будет выполнено до следующего экрана. так что это работает как на key_up для тех, кто знаком с html-JS или Visual studio

Убедитесь, что параметр обратного вызова имеет тип SPTouchEvent, а не SPEvent.

Я нашел ответ здесь: http://forum.sparrow -framework.org / topic / слушатели событий, вызываемые слишком быстро

1 голос
/ 22 августа 2011

Хотя я не уверен в точной структуре или реализации ваших взглядов, я думаю, что у меня есть альтернатива вашему решению.Вместо того, чтобы устанавливать задержку касания для начала игрового события, почему бы не отключить ее, когда отображается текст «игра окончена»?По моему опыту, это работало лучше для меня, и было больше самодокументирования.

...