Flash & Flex SDK / AS3 - Как сохранить фокусировку клавиатуры?

Я пишу флеш-приложение во Flex / AS3, и я не могу назначить ему фокус клавиатуры. Я помнил об этой проблеме на ранней стадии разработки и добавил заставку с кнопкой «играть сейчас», чтобы побудить пользователя нажать. Тем не менее, пользователь должен нажать второй раз на приложение, чтобы клавиатура работала!

Что еще хуже, у меня есть ярлык в игре, который возвращает вас в главное меню. Если вы вернетесь в главное меню и нажмете кнопку «воспроизвести сейчас», SWF снова потеряет фокус!

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

Мое приложение представляет собой один файл .SWF, и я запускаю его прямо в браузере (не вызывая его через веб-страницу, хотя в конечном итоге я это сделаю). Вот этот файл:

http://www.space-squid.com/game/Main.swf Когда вы нажимаете «Normal», вам нужно нажать второй раз, чтобы фактически захватить фокус клавиатуры. :( Не стесняйтесь задавать вопросы!

Редактировать: Вот код, который я использую.

Некоторые из первого кода, который выполняется в моем основном классе:

empty_sprite = new Sprite();
addChild(empty_sprite);
empty_sprite.stage.addEventListener(keyboard hooks...);

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

this.stage.addEventListener(keyboard hooks...);

В случае, если в противном случае пустой спрайт вызывал проблемы:

background_image = new BackgroundImage();
background_image.x = etc etc alignment data;
addChild(background_image);
background_image.stage.addEventListener(keyboard hooks...)

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

ВТОРОЙ РЕДАКТИРОВАТЬ: Ну, я сузил проблему. Возможно, кто-то может помочь мне исправить это, возможно, это структурная проблема:

public function Main {
    Some stuff...
    empty_sprite = new Sprite(); // Create a new stage sprite
    addChild(empty_sprite);
    empty_sprite.stage.addEventListener(keyboard hooks...);        

    addChild(BackgroundImage); // I lay down my background image which is persistant

    addChild(PlayNowButton); // I display my PlayNow button to the screen

    More stuff...
}

public function StartGame() {
    removeChild(PlayNowButton); // This is the point of failure; this removes focus.
    removeChild(otherMenuOptions);
    ...
    addChild(gameComponents);
}

Как видите, я создаю кнопку воспроизведения сейчас - и кажется, что она становится объектом фокуса. Мои события клавиатуры не попадают в ловушку, так как это фон, который ищет фокус. Не уверен, что в этом есть смысл, надеюсь, кто-нибудь сможет меня поправить!

Если я закомментирую эту единственную строку (removeChild (PlayNowButton)), игра работает отлично и сохраняет фокусировку на клавиатуре - с обратной стороной, когда кнопка «playnow» накладывается на экран навсегда.

Честно говоря, я даже не уверен, что игра сама по себе фокусируется на первом клике, но я не уверен, как это проверить.

Ответы на вопрос(2)

Ваш ответ на вопрос