Поле со списком Flash CS4 не отображается при встраивании

У меня есть фильм Flash CS4, в котором используется стандартный комбинированный список Flash . Это отлично работает, если я не использую получившийся SWF, встроенный в HTML-страницу. Когда я его вставляю, поле со списком не отображается, не отправляет события мыши, как будто его не существует. Однако, если я переключаюсь в полноэкранный режим, поле со списком появляется и работает нормально, даже если я переключаюсь обратно из полноэкранного режима.

Я думаю, что это ошибка компонента, Flash CS4 или самого Flash-плеера, так как это также происходит с пустым фильмом, где есть только поле со списком. Все, что я нашел, когда искал в Google, - это кто-то с той же проблемой , но решения нет.

Может ли кто-нибудь предложить исправление или обходной путь?


person Sietse    schedule 04.01.2010    source источник


Ответы (1)


Я обнаружил, что установка атрибута wmode в теге <embed> на window (это раньше было установлено значение transparent) решает проблему. Почему это вызывает проблемы с комбинированным списком (и только со списком, afaict), я понятия не имею, но я рад, что решил эту проблему.

РЕДАКТИРОВАТЬ: я нашел обходной путь в коде, поэтому Я все еще могу использовать прозрачный режим wmode. По-видимому, проблема в том, что Flash-плеер не отправляет события Event.RENDER, когда находится в прозрачном режиме wmode. Хитрость заключается в том, чтобы отправлять это событие вручную в ключевые моменты. Это мое решение:

private function renderStage(e:Event=null){
 stage.dispatchEvent(new Event(Event.RENDER));
}

myComboBox.addEventListener(ListEvent.ITEM_CLICK, renderStage);
myComboBox.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, renderStage);
myComboBox.addEventListener(ListEvent.ITEM_ROLL_OUT, renderStage);
myComboBox.addEventListener(ListEvent.ITEM_ROLL_OVER, renderStage);
myComboBox.addEventListener(Event.CHANGE, renderStage);

Кажется, это работает.

person Sietse    schedule 05.01.2010