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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.08.2007, 03:58
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 11  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Может попробуй сделать список для хранения свох МувиКлипов(сам не тестил, писал находу):

Код:
var mсList:MovieClip = new MovieClip(); // хотя хватит и просто Sprite
addChild(mсList);

...

var mc = new myNewMc();
mc.addEventListener(MouseEvent.CLICK, mcClick);
mcList.addChild(mc);

...

function mcClick(event:MouseEvent):void 
{
    DisplayObject(event.target).removeEventListener(MouseEvent.CLICK, mcClick);
    mcList.removeChild(DisplayObject(event.target)); 
    // Здесь может быть могут быть нюансы с event.target :)
}


Последний раз редактировалось 2morrowMan; 23.08.2007 в 04:03.
Старый 23.08.2007, 09:49
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 12  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
removeChild не удалит клип из памяти, только из Display list.

Старый 23.08.2007, 11:21
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 13  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Может быть проблема автора поста в том, что он создает обработчик события для МувиКлипа и не удаляет его (removeEventListener()) и потом GC не удаляет этот МувиКлип из памяти...

Старый 23.08.2007, 13:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 14  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Какой обработчик? Нет там никаких обработчиков, я привел пример живущего клипа без всяких обработчиков.

Старый 23.08.2007, 14:42
MoHaX вне форума Посмотреть профиль Отправить личное сообщение для MoHaX Найти все сообщения от MoHaX
  № 15  
Ответить с цитированием
MoHaX
 
Аватар для MoHaX

Регистрация: Aug 2004
Сообщений: 422
Отправить сообщение для MoHaX с помощью ICQ
Да, всё хорошо..
Я разобрался с этим. Память просто отчищасется в редких случаях походу только когда её хватать перестаёт..

Старый 23.08.2007, 15:17
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 16  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
__etc, обработчик там все таки есть. Откудато trace('hello') происходит же.
Удалив из первого кадра MyClip'а и написав так:
Код:
var mc:MovieClip = new MyClip();
mc.addEventListener('enterFrame', traceHello);
addChild(mc);

function traceHello(e:Event):void {
	trace('hello');
} 


function clickHandler(event:Event):void {
	mc.removeEventListener('enterFrame', traceHello);
	removeChild(mc);
}
stage.addEventListener(MouseEvent.CLICK, clickHandler);
Все вроде кул.
Ну а если надо экземпляр класс удалить, то предлогаю написать функцию destroy
Код:
package {

	import flash.display.*;
	import flash.events.*;
	
	public class MyClip extends MovieClip {
	
		public function MyClip():void {
			trace('myclip init');
			this.addEventListener('enterFrame', traceHello);
		}
		
		private function traceHello(e:Event):void {
			trace('hello');
		} 
		
		public function destroy():void {
			this.removeEventListener('enterFrame', traceHello);
		}
	}

}


Последний раз редактировалось Dima_DPE; 23.08.2007 в 15:32.
Старый 23.08.2007, 16:00
MoHaX вне форума Посмотреть профиль Отправить личное сообщение для MoHaX Найти все сообщения от MoHaX
  № 17  
Ответить с цитированием
MoHaX
 
Аватар для MoHaX

Регистрация: Aug 2004
Сообщений: 422
Отправить сообщение для MoHaX с помощью ICQ
2Dima_DPE
Этот способ хорош для того чтобы подготовить клип к его смерти.
но в памяти он будет еще долго жить..
У __etcта тейс идёт не от Евента, а он того что клип зацикленно проигрывает анимацию на своём таймлайне. В следствии чего перед удалением клип лучше еще и остановить stop() чтобы успокоить его душу)

Старый 23.08.2007, 16:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 18  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Dima_DPE, это не освободит память, уже проверено. Мы просто скрываем от себя самого существование клипа. Как тогда объяснишь принудительное срабатывание GC? Если ссылки есть, он не удалит клип никогда. Если удаляет, значит все-таки ссылок нет, но удаление не происходит автоматически.

Старый 23.08.2007, 16:37
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 19  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Единственная проблемы с принудительным запуском GC - сколько времени это занимает, у меня заняло 7ms...

Старый 23.08.2007, 16:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 20  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Сразу он не срабатывает, а во флексе даже на enterFrame не срабатывает. Возможно, это из-за иной схемы тестирования.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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