Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 07.06.2002, 13:14
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 1  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
По умолчанию 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

ктонибудь знает в чем дело?

Старый 07.06.2002, 15:29
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 2  
john
МЕГАФЛЭШЕР

Регистрация: 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));

}

Старый 07.06.2002, 15:51
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 3  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
да, так работает

интересная фичка, но почему?

Старый 07.06.2002, 16:11
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 4  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
предполагаю это что то с инициализацией класса.
создается ведь на то же место. а компоненты "рисуют" себя только через кадр от создания .... но тогда и мой вариант не должен работать,...
я вообще всегда работаю со ссылками... и я бы написал сразу мой вариант.
короче шаманство.


Последний раз редактировалось john; 07.06.2002 в 16:12.
Старый 07.06.2002, 16:26
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 5  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
вопрос отсается в силе, так как предложеное решение не помогает в более сложных случаях. пример пока не могу привести, но постараюсь.

Старый 09.06.2002, 02:39
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 6  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: 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.
Старый 10.06.2002, 17:52
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 7  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
попробую удалить как советует уважаемый Nox Noctis.

на самом деле круто раскопал!!!!
я тоже до Анлоада дошел, но я попробовал затрейсить тело функции, теперь попробую удалить саму функцию.

ну так зачем макромедиа все это намутили?

Старый 13.06.2002, 11:14
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 8  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
удаление unload решило все проблемы, combo заработал корректно.

ктонибудь может обюъяснить зачем они ее вставили ?

Старый 13.06.2002, 18:16
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 9  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: 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, время: 09:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.