![]() |
comboBox баг
new_combo = function (){
_root.createEmptyMovieClip("win",1); _root.win._x = random (200); _root.win._y = random (200); _root.win.attachMovie("FComboBoxSymbol","lis", 1); } new_list = function (){ _root.createEmptyMovieClip("win",1); _root.win._x = random (200); _root.win._y = random (200); _root.win.attachMovie("FListBoxSymbol","lis", 1); } функция с листом отрабатывает прекрасно а вот функция с комбо отрабатывает только через раз примеры здесь sample swf - http://www.time-line.kz/test/combo_bug.swf zipped fla - http://www.time-line.kz/test/combo_bug.zip ктонибудь знает в чем дело? |
забавно, что так все работает
new_combo = function (){ var a = _root.createEmptyMovieClip("win",1); a._x = random (200); a._y = random (200); trace(a.attachMovie("FComboBoxSymbol","lis", 5)); } |
да, так работает :)
интересная фичка, но почему? |
предполагаю это что то с инициализацией класса.
создается ведь на то же место. а компоненты "рисуют" себя только через кадр от создания .... но тогда и мой вариант не должен работать,... я вообще всегда работаю со ссылками... и я бы написал сразу мой вариант. короче шаманство. |
вопрос отсается в силе, так как предложеное решение не помогает в более сложных случаях. пример пока не могу привести, но постараюсь.
|
в действительности все не так, как на самом деле...
(народная мудрость) а на самом деле до жути просто :) ...сразу перейдем к тому, как будет работать: Код:
new_combo = function () {когда мы переписываем старый клип с комбой новым пустым клипом, то как раз и срабатывает обработчик onUnload... ...теперь берем пустой мув, кидаем на сцену компонент комбобокс, альт+ф3 -> MovieExplorer и вбиваем в строку поиска слово onUnload что видим : Код:
Scene 1проверяем то же самое для листа - онАнлоад не определяется, и следовательно все работает !.. выхода два: – либо удалять онАнлоад перед новым аттачем (как в коде выше) – либо более удобно: 1. идем в библиотеку->Flash UI Components->ComboBox 2. открываем клип и в верхнем слое "Actions : Class" находим слово "onUnload" 3. убиваем эту функцию :) ...если б вы только знали, КАК я этот нашел :p ... пятнадцать минут полного извращения :p |
попробую удалить как советует уважаемый Nox Noctis.
на самом деле круто раскопал!!!! я тоже до Анлоада дошел, но я попробовал затрейсить тело функции, теперь попробую удалить саму функцию. ну так зачем макромедиа все это намутили? |
удаление unload решило все проблемы, combo заработал корректно.
ктонибудь может обюъяснить зачем они ее вставили ? |
почитай объявление класса FComboBoxClass...
там есть такое: _global._popUpLevel = (_global._popUpLevel==undefined) ? 20000 : _global._popUpLevel+1; // Testing for _root's existence? this.superHolder = _root.createEmptyMovieClip("superHolder" + _popUpLevel, _popUpLevel); то есть проверяется на какую глубину можно положить суперХолдер, и клип суперХолдер создается в руте... значит чтобы его убить, когда комбобокс исчезнет из таймлайна, нужно отдельное действие, которое и реализуется онАнлоадом. |
| Часовой пояс GMT +4, время: 18:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.