![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2001
Сообщений: 45
|
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 ктонибудь знает в чем дело? |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
забавно, что так все работает
new_combo = function (){ var a = _root.createEmptyMovieClip("win",1); a._x = random (200); a._y = random (200); trace(a.attachMovie("FComboBoxSymbol","lis", 5)); } |
|
|||||
|
Регистрация: Oct 2001
Сообщений: 45
|
да, так работает
![]() интересная фичка, но почему? |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
предполагаю это что то с инициализацией класса.
создается ведь на то же место. а компоненты "рисуют" себя только через кадр от создания .... но тогда и мой вариант не должен работать,... я вообще всегда работаю со ссылками... и я бы написал сразу мой вариант. короче шаманство. Последний раз редактировалось john; 07.06.2002 в 16:12. |
|
|||||
|
Регистрация: Oct 2001
Сообщений: 45
|
вопрос отсается в силе, так как предложеное решение не помогает в более сложных случаях. пример пока не могу привести, но постараюсь.
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
в действительности все не так, как на самом деле...
(народная мудрость) а на самом деле до жути просто ![]() ...сразу перейдем к тому, как будет работать: new_combo = function () {
delete _root.win.lis.onUnload;
_root.createEmptyMovieClip("win", 1);
_root.win._x = random(200);
_root.win._y = random(200);
_root.win.attachMovie("FComboBoxSymbol", "lis", 1);
};
![]() когда мы переписываем старый клип с комбой новым пустым клипом, то как раз и срабатывает обработчик onUnload... ...теперь берем пустой мув, кидаем на сцену компонент комбобокс, альт+ф3 -> MovieExplorer и вбиваем в строку поиска слово onUnload что видим : Scene 1
Symbol Definition(s)
ComboBox
actions for frame 1
#initclip 3
/*
FComboBoxClass
EXTENDS FScrollSelectListClass
This class manages a "pulldown" scrolling list.
*/
function FComboBoxClass() {
............. [skip]
............. [skip]
............. [skip]
this.onUnload = function()
{
this.superHolder.removeMovieClip();
}
............. [skip]
............. [skip]
............. [skip]
![]() проверяем то же самое для листа - онАнлоад не определяется, и следовательно все работает !.. выхода два: – либо удалять онАнлоад перед новым аттачем (как в коде выше) – либо более удобно: 1. идем в библиотеку->Flash UI Components->ComboBox 2. открываем клип и в верхнем слое "Actions : Class" находим слово "onUnload" 3. убиваем эту функцию ![]() ...если б вы только знали, КАК я этот нашел ... пятнадцать минут полного извращения ![]() Последний раз редактировалось Nox Noctis; 09.06.2002 в 02:43. |
|
|||||
|
Регистрация: Oct 2001
Сообщений: 45
|
попробую удалить как советует уважаемый Nox Noctis.
на самом деле круто раскопал!!!! я тоже до Анлоада дошел, но я попробовал затрейсить тело функции, теперь попробую удалить саму функцию. ну так зачем макромедиа все это намутили? |
|
|||||
|
Регистрация: Oct 2001
Сообщений: 45
|
удаление unload решило все проблемы, combo заработал корректно.
ктонибудь может обюъяснить зачем они ее вставили ? |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
почитай объявление класса FComboBoxClass...
там есть такое: _global._popUpLevel = (_global._popUpLevel==undefined) ? 20000 : _global._popUpLevel+1; // Testing for _root's existence? this.superHolder = _root.createEmptyMovieClip("superHolder" + _popUpLevel, _popUpLevel); то есть проверяется на какую глубину можно положить суперХолдер, и клип суперХолдер создается в руте... значит чтобы его убить, когда комбобокс исчезнет из таймлайна, нужно отдельное действие, которое и реализуется онАнлоадом. |
![]() |
Часовой пояс GMT +4, время: 10:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|