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

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

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

Регистрация: Mar 2008
Сообщений: 259
По умолчанию Embed и CPU Usage

Проблема вот такая.
Имеем эмбеженную флешку так, чтобы сохранялись скрипты. Просто эмбед не подойдет, потому что трутся скрипты.

Код AS3:
[Embed (source="swf.swf", mimeType="application/octet-stream")]
private static var swfClass:Class;
public static var swfExample:MovieClip;
 
private function init():void
{			
	var swfclass:Class = Class.swfClass;
	var loader:Loader = new Loader();
	loader.loadBytes(new swfclass());
	loader.contentLoaderInfo.addEventListener(Event.INIT,onInitCard);	
}
 
private function onInitCard(e:Event):void
{			
	Class.swfExample = e.target.content;
	e.target.loader.unload();
	e.target.removeEventListener(Event.INIT,onInitCard);
}
Проблема в том, что когда я делаю loadBytes, создавая новый экземпляр класса, он создается как-то так хитро, что флешка висит в памяти и проигрывается по кругу, что конечно же приводит к проблемам с ЦП, если флешка нагруженная.
Конечно, ворк-эраунд - создания у флешки первого самого пустого кадра со стопом, который ничего тормозить не будет. Но может быть кто-то знает, как можно выгрузить этот экземпляр из памяти подчистую?

P.S. что интересно, строчка
Код AS3:
Class.swfExample = e.target.content;
- не вызывает никаких дополнительных висяков, т.е. что с ней, что без нее результат один.

Старый 11.06.2010, 14:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
(e.target.content as MovieClip).gotoAndStop(1);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.06.2010, 14:56
Сайлас вне форума Посмотреть профиль Отправить личное сообщение для Сайлас Найти все сообщения от Сайлас
  № 3  
Ответить с цитированием
Сайлас

Регистрация: Mar 2008
Сообщений: 259
Эээ а комментарий к коду?
Если это код того, как остановить флешку, то я это прекрасно себе представляю. Но в конце я выделил, что дело происходит из-за экземпляра вот здесь:
Код AS3:
loader.loadBytes(new swfclass());

Старый 12.06.2010, 23:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Эээ а комментарий к коду?
Цитата:
Сообщение от Сайлас Посмотреть сообщение
Имеем эмбеженную флешку так, чтобы сохранялись скрипты. Просто эмбед не подойдет, потому что трутся скрипты.
Я, например, не в курсе, чем ембед отличается от "просто" эмбед.

Ошибся немного.
Код AS3:
private function onInitCard(event:Event):void {	
    event.target.removeEventListener(Event.INIT,onInitCard);
    ( (event.target as LoaderInfo).loader.content as MovieClip).gotoAndStop(1); // стопим мувик
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 13.06.2010, 18:01
Сайлас вне форума Посмотреть профиль Отправить личное сообщение для Сайлас Найти все сообщения от Сайлас
  № 5  
Ответить с цитированием
Сайлас

Регистрация: Mar 2008
Сообщений: 259
Иногда мне кажется, что аструмные флешеры со временем работы в аструме становятся все суровее и суровее

Итак, описываю еще раз. (stop - не решение, а workaround, который я в первом же посте и упомянул, мне НЕ нужен этот экземпляр в памяти).

В чем разница между, как я сказал, между просто эмбедом и этим эмбедом.
Этот эмбед:
Код AS3:
[Embed (source="swf.swf", mimeType="application/octet-stream")]
После загрузки сохранит все фреймскрипты
Этот эмбед:
Код AS3:
[Embed (source="swf.swf", symbol="symbol1")]
и создание экземпляра этого класса для меня не сохраняет. Если научите, как их сохранить буду только рад.

Далее просто дело в том, что после лоадинга заэмбеженного первым способом сообщения лишний и ненужный объект навеки провисает в памяти зачем-то. И как его оттуда выкинуть непонятно

Старый 13.06.2010, 20:02
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
с помощью 10-чного unloadAndStop вроде бы удается избавится от экземпляра
и еще: если не хочется, чтоб висел в памяти, то логичнее хранить класс, а не экземпляр
Код AS3:
public static var swfExampleClass:Class;
private function onInitCard(e:Event):void
{	
	var loaderInfo:LoaderInfo = e.target as LoaderInfo;
	loaderInfo.removeEventListener(Event.INIT,onInitCard);
	var clName:String = getQualifiedClassName(loaderInfo.content);
	Main.swfExampleClass = loaderInfo.applicationDomain.getDefinition(clName) as Class;
 
	loaderInfo.loader.unloadAndStop();
}


Последний раз редактировалось silin; 13.06.2010 в 20:14.
Старый 13.06.2010, 20:54
Сайлас вне форума Посмотреть профиль Отправить личное сообщение для Сайлас Найти все сообщения от Сайлас
  № 7  
Ответить с цитированием
Сайлас

Регистрация: Mar 2008
Сообщений: 259
Я вот про анлоад проверил в первый раз, а вот по поводу того что класс хранить - это надо попробовать, что-то я не догадался как-то

P.S. А я вот делаю unload, а анлоадистоп не делаю, надо его еще попробовать, он оказывается круче чем просто стоп и анлоад отдельно


Последний раз редактировалось Сайлас; 13.06.2010 в 20:57.
Старый 15.06.2010, 11:18
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Пляшите от того, в какой ApplicationDomain попадает загружаемый definition. Если будет хоть одна ссылка на этот app domain, либо на объект, инстанцированный из этого домена, то выгрузить этот домен не удастся.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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