2010-01-04 2 views
3

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

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

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

+0

Вы можете загрузить пример – Josh

ответ

4

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

EDIT: У меня есть код found a workaround, поэтому я все еще могу использовать прозрачный wmode. По-видимому, проблема в том, что Flash Player не отправляет события 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); 

Это похоже на работу.