Использование раскадровки отключает сенсорные события? - PullRequest
1 голос
/ 22 февраля 2012

Я новичок в Corona SDK.У меня есть 2 сцены A & B.

В сцене A у меня есть кнопка с событием OnRelease.Эта кнопка создается и добавляется в группу в сцене Создать событие.Нажатие на кнопку приводит меня к сцене B (storyboard.gotoScene ("B")).

В сцене B у меня есть событие касания на коробке (изображение ящика).Сенсорный слушатель добавляется в событие «Сцена начала» и удаляется в событии «Выход из сцены».Нажатие на ящик возвращает меня к A (storyboard.gotoScene ("A")).

Итак, вот настоящая досадная проблема: после возврата к A все события в этой сцене теперь отключены.т.е. я больше не могу нажимать на кнопку (без события).

Предоставит фрагмент кода, если мне не хватает информации выше.Спасибо.

* Обновление *

После некоторого перерыва я вернулся сегодня и снова начал отлаживать.Я нашел проблему довольно быстро.Проблема была как-то связана с моим обработчиком событий (который вызывает переход со сцены B на A).

фрагмент ниже, вызвавший проблему:

function testTouched( event )

-- process cue-touched event...
--local t = event.target -- commenting this was the fix.
local phase = event.phase

if "began" == phase then

        print("     -> back to menu")
        --display.getCurrentStage():setFocus( t ) -- commenting this was the fix.
        --t.isFocus = true -- commenting this was the fix.
        storyboard.gotoScene( "menu", "flipFadeOutIn", 500 )

end

-- Stop further propagation of touch event
return true

1 Ответ

0 голосов
/ 22 марта 2012

Из того, что я вижу здесь ,

enterScene

Отправляется при вызове storyboard.gotoScene () сразу после завершения перехода.Таким образом, если вы указали эффект перехода, это событие отправляется, как только эффект закончится.Для этого события в функцию слушателя следует поместить добавляющих слушателей или логику приложения / игры.

exitScene

Когда вызывается storyboard.gotoScene (), событие exitScene будетотправляется в текущую сцену до перехода.Обязанности по очистке, такие как удаление прослушивателей событий, таймеры остановки и т. Д., Должны быть помещены в функцию прослушивателя для этого события.

Добавьте прослушиватели событий в событие enterScene() вместо createScene() и удалите ихв exitScene()?

Редактировать : я думаю, вам нужно будет display.getCurrentStage():setFocus(nil) в exitScene().

...