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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.07.2009, 12:52
  № 1  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
По умолчанию Как динамически удалить Components

Задача в следующем:
На сцене есть клип
Код AS1/AS2:
_root.attachMovie("clip","clip",1000);
В него загружается компонент
Код AS1/AS2:
_root.clip.attachMovie("ComboBox","com1",2100);
Все нормально. Но когда клип нужно удалить
Код AS1/AS2:
_root.clip.removeMovieClip();
Исчезает он только визуально trace(_root.clip) – выводит адрес клипа.
В Хэлпе (ActionScript classes > MovieClip > removeMovieClip (MovieClip.removeMovieClip method) ) примечание: Note: If you are using version 2 components, do not use this method. If you place a version 2 component either on the Stage or in the Library, the getNextHighestDepth() method can sometimes return depth 1048676, which is outside the valid range. If you are using version 2 components, you should always use the version 2 components DepthManager class.
Если я правильно перевел, то это значит, что при вставке Компонента, не следует пользоваться функцией getNextHighestDepth(), т.к. она может назначить глубину, выходящую за допустимые пределы, и removeMovieClip() работать не будет. Но ведь я назначаю глубину обычным присвоением, и все равно не работает.
Там же, был предложен еще один вариант удаления: If you must use getNextHighestDepth() with version 2 components, you can use swapDepths() to assign a valid depth value or use MovieClip.unloadMovie() to remove the contents of the movie clip. Alternatively, you can use the DepthManager class to assign depth values within the valid range.
Но unloadMovie() тоже не помогает.
Подскажите, пожалуйста, как правильно удалить Компонент (или клип с этим компонентом).
PS.
Вставка такого же клипа, на такую же глубину тоже не помогает.

Старый 27.07.2009, 13:44
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
попробуйте трейс глубины компонента, точно 2100 у него?

Старый 27.07.2009, 14:27
  № 3  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
Цитата:
Сообщение от Juice_Green Посмотреть сообщение
попробуйте трейс глубины компонента, точно 2100 у него?
Конечно, вот код:
Код AS1/AS2:
_root.attachMovie("clip","clip",1000);
 
add_btn.onPress = function(){//добавить ComboBox
	_root.clip.attachMovie("ComboBox","com1",2100);
	trace("Depth ComboBox > "+_root.clip.com1.getDepth());//Depth ComboBox > 2100
}
 
del_btn.onPress = function(){//удалить клип
trace("_root.clip.getDepth() > "+_root.clip.getDepth());//_root.clip.getDepth() > 1000
trace("_root.clip.com1.getDepth() > "+_root.clip.com1.getDepth());//_root.clip.com1.getDepth() > 2100
_root.clip.removeMovieClip();
trace("AFTER del, ComboBox > "+_root.clip.com1);//AFTER del, ComboBox > _level0.clip.com1
trace("AFTER del, clip > "+_root.clip);//AFTER del, clip > _level0.clip
}

Старый 27.07.2009, 14:55
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 4  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
и все таки удаление происходит, только не мгновенно, если еще раз нажать на кнопку del_btn, то значения уже undefined

Старый 27.07.2009, 15:16
  № 5  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
Действительно! Juice_Green - орлиный глаз!
Но сразу еще вопрос: а как подловить момент, когда это удаление происходит?
Пробовал проследить так:
Код AS1/AS2:
clip.onUnload = function(){
	trace("onUnload");//onUnload
	trace("onUnload, clip > "+_root.clip);//onUnload, clip > _level0.clip
т.е. даже событие onUnload срабатывает слишком рано (

добавлено..
кстати прикол
Код AS1/AS2:
clip.onUnload = function(){
	id = setInterval(function () {
		clearInterval(id);
		trace("onUnload, clip > "+_root.clip);	//onUnload, clip > undefined
	}, 1);
}


Последний раз редактировалось Xero201; 27.07.2009 в 15:28. Причина: узнал дополнительную инфу по данному вопросу
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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