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

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

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

Регистрация: Nov 2005
Сообщений: 48
По умолчанию System.totalMemory: ударные темпы роста

Здравствуйте.

имеем [CENSORED]
в левом верхнем углу там видно System.totalMemory.
перемещаясь по portfolio, можно легко убедиться, что System.totalMemory все время возрастает. когда доходит дело до видео то вообще.
водскажите пожалуйста, что я делаю не так?

класс для объекта галереи:
Код AS3:
package portfolio{
	import flash.events.*;
	import flash.display.Loader;
    import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.net.URLRequest;
 
	public class portfolioPicture extends flash.display.MovieClip{
		public	var 	_picture:pic,
 
						loadDone:Boolean,
 
						under:MovieClip,
						preloader:MovieClip,
						pictureLoader:Loader,
						bu:transB;
 
		public function portfolioPicture(initPic:pic){
			////////////////////////////////////////
			_picture=new pic;
			_picture=initPic;
 
 
			x=_picture.__x;
			y=_picture.__y;;
 
 
 
			////////////////////////////////////////
			under=new trans;
			var ram:int=6;
			with(under){
				x=-ram;
				y=-ram;
				width=_picture.__width+ram*2;
				height=_picture.__height+ram*2;
				name="Underlay";
			}
			this.addChild(under);
 
			////////////////////////////////////////
			loadDone=false;
 
			preloader=new picPreload;
			preloader.x=_picture.__width/2;
			preloader.y=_picture.__height/2;
			preloader.scaleX=preloader.scaleY=.2;
			preloader.name="Preloader";
			addChild(preloader);
 
			pictureLoader = new Loader(); 
			pictureLoader.load(new URLRequest(_picture.__url)); 
			pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loaded,false,0,true); 
			pictureLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _progress,false,0,true); 
			pictureLoader.name="Loader";
			addChild(pictureLoader);
 
			////////////////////////////////////////
			if(_picture.__isButton) {
				bu=new transB;
				bu.name="Button";
				bu.width=_picture.__width,bu.height=_picture.__height;
				bu.addEventListener(MouseEvent.MOUSE_DOWN,mousedown,false,0,true);
				addChild(bu); 
			}
 
			////////////////////////////////////////
			this.addEventListener(Event.REMOVED_FROM_STAGE,removedEvent,false,0,true);
		}
 
		function removedEvent(ev:Event){
				this.removeEventListener(Event.REMOVED_FROM_STAGE, removedEvent);
				destroy();
			}
 
		function mousedown(e:MouseEvent){
			(parent.parent as MovieClip)._lagrePic(_picture.__chapter,_picture.__part,_picture.__num);
		}
 
		function _loaded(e:Event){
			loadDone=true;
			stopLoadingProgress();
			pictureLoader.width=_picture.__width;
			pictureLoader.height=_picture.__height;
		}
 
		function _progress(e:ProgressEvent){
			var tk:int=e.target.bytesLoaded/e.target.bytesTotal*100; 
			preloader.indicate(tk);
		}
 
		function destroy(){
			stopLoader();
			while(numChildren) removeChildAt(0);
			if(_picture.__isButton) bu.removeEventListener(MouseEvent.MOUSE_DOWN,mousedown);
			_picture=null,under=null,bu=null;
			//trace("portfolio picture completely destroyed")
 
		}
 
		function stopLoader(){
				if(pictureLoader) {
					removeChild(pictureLoader);
					if(loadDone){
						pictureLoader.unload();
						} else {
						pictureLoader.close();
						pictureLoader.unload();
						stopLoadingProgress();
						}
					}	
					pictureLoader=null;
 
				}
 
		function stopLoadingProgress(){
			pictureLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _loaded);
			pictureLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,_progress); 
			removeChild(preloader);
			preloader=null;
		}
 
		}
}

класс для группы тумбнейлов:

Код AS3:
package portfolio{
	import flash.display.MovieClip;
	import flash.events.Event;
 
	public class portfolioThumbs extends flash.display.MovieClip{
		public function portfolioThumbs(partToBeDrawn:poItem){
			for(var n=0;n<partToBeDrawn.thumbs.length;n++){
				var thu:portfolioPicture=new portfolioPicture(partToBeDrawn.thumbs[n]);
				thu.name=("thumb_N_"+n);
				this.addChild(thu);
			}
			this.addEventListener(Event.REMOVED_FROM_STAGE,removedEvent,false,0,true);
			}
 
		function removedEvent(ev:Event){
				this.removeEventListener(Event.REMOVED_FROM_STAGE, removedEvent);
				destroy();
				}
 
		function destroy(){
			while(numChildren>0) removeChild(getChildAt(0));
			//trace("thumbnails destroyed");
			}
		}
	}


Последний раз редактировалось tkaChuck; 27.04.2010 в 09:08.
Старый 06.02.2010, 04:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Для оформления кода используйте теги [as3][/as3].
__________________
Hell is the possibility of sanity

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

Регистрация: Nov 2005
Сообщений: 48
да, прошу прощения.

Старый 17.02.2010, 06:11
tkaChuck вне форума Посмотреть профиль Отправить личное сообщение для tkaChuck Найти все сообщения от tkaChuck
  № 4  
Ответить с цитированием
tkaChuck

Регистрация: Nov 2005
Сообщений: 48
да, насколько я могу судить, это главное. - и память свободна)

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

ответьте пожалуйста на такие вопросы а то я сам не уверен.
1. если объекты имеют ссылки друг на друга, но находятся не в дисплейлисте, и никто в дисплейлисте не имеет ссылок на эти объекты. будут ли они уничтожены?

2. неужели нет способа вызывать GC принудительно? А то, например, когда в галереее загружается видео, тоталмемори возрастает, потом (когда его уже типа удалили)снижается но не до исходной отметки, и очень не сразу. хотя я останавливаю видео и делаю unload(); .. и тормозит. на это видео натравить бы GC сразу как я отписался.

3. когда делаешь debug->list objects (ctrl-L), видишь там только элементы дисплейлиста. их и так видно, а как увидеть те которые НЕ в дисплейлисте?

4. Почему не работает download? имеем
Код AS3:
var fileRef:FileReference=new FileReference();
var req:URLRequest = new URLRequest("http://www.eyesofdream.com/resume.pdf");
fileRef.download(req,"resume.pdf");
выбор куда сохранять происходит, и все. тишина.

5. Через неравные промежутки времени происходит нечто, и памяти становится занято на 41 байт больше. это необратимо. уже я искал всячески. что это такое может быть?

6. что происходит с объектами, которые не в текущем кадре? вот, скажем, у меня есть в кадре #40 такое.
Код AS3:
buttonPDF.addEventListener(MouseEvent.CLICK,clickPDF,false,0,true);
.
и вот, я перехожу в соседний кадр. кнопки больше в дисплейлисте нет. в списке объектов (в дебаггере List Objects) ее нет. но память она занимает и со временем никуда не девается! или нет?
7. когда вызывается fileReference.browse(), то все останавливается. как это вызвать самостоятельно?

прошу вас, братцы, помогите я сильно горю по срокам.

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

Регистрация: Sep 2002
Сообщений: 30,787
Картинки каких размеров?
И да, потребление 400+ мегабайт памяти и 120% двухядерного процессора — не самое лучшее достоинство сайта. Я бы сказал, главная особенность.

Старый 17.02.2010, 09:54
tkaChuck вне форума Посмотреть профиль Отправить личное сообщение для tkaChuck Найти все сообщения от tkaChuck
  № 6  
Ответить с цитированием
tkaChuck

Регистрация: Nov 2005
Сообщений: 48
а, картинки маленьки ваще..

Да, как бы нифига ни разу не круто. У меня 140%. Еще это небо. Оно обязательное условие в "дизайне".. Оно в эти 140 делает значительный вклад. Дополнительный вопрос: как можно оптимизировать проигрывание ролик на фоне? сейчас это видео на таймлайне

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от tkaChuck Посмотреть сообщение
Дополнительный вопрос: как можно оптимизировать проигрывание ролик на фоне?
Убрать его вообще. Равно как и проплывающие хреновины.

Старый 17.02.2010, 10:53
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 8  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Ох, ты ё, это видео, а я думал что Вы так с PerlinNoise так зафигачили.
Ну во-первых убрать видео с тамлайна, и запустить сайт без него.
У Вас же сайт-то простой, там нет ничего такого чтобы жрало ресурсы.
Попробуйте убрать фоновое видео, и потом летающие штуки, Вы их удаляете,когда они за экран уходят?
__________________
Я просто добрый шутник.

Старый 17.02.2010, 11:34
TERRORist вне форума Посмотреть профиль Отправить личное сообщение для TERRORist Найти все сообщения от TERRORist
  № 9  
Ответить с цитированием
TERRORist
 
Аватар для TERRORist

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
Цитата:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at portButtonMain/_activate()
at portButtonMain/frame10()
ошибка

Старый 18.02.2010, 13:51
tkaChuck вне форума Посмотреть профиль Отправить личное сообщение для tkaChuck Найти все сообщения от tkaChuck
  № 10  
Ответить с цитированием
tkaChuck

Регистрация: Nov 2005
Сообщений: 48
я горжусь вами, братцы.
На вопрос "что делать с небом - оно должно присутствовать но не тормозить?" получаем два отличных совета от него избавиться.
На главный вопрос "что жрет ресурсы??" имеем "там нет ничего такого чтобы жрало ресурсы".
Ну и в довершение, внезапно обнаружена ошибка. прелестно.

Старый анекдот. Водитель выходит из автобуса и начинает чинить. Тут к нему подходит мальчик и говорит: Дядя я знаю, что у вас сломалось. Водитель кричит: Ну и что у меня сломалось??? Мальчик отвечает: Дядя у вас сломался автобус.

вы простите за сарказм, просто поймите правильно. я делаю все что знаю, но элементарный сайт жрет раз в 20 больше чем должен. Это мой первый проект на АС3.. вот что я делаю. я зануляю все ссылки на объекты, которые мне больше не нужны. тоесть делаю этим переменным =null. Я отписываюсь от всех листенеров, и на всякий случай всегда юзаю weakReference. лоадерам всем я делаю unload.

я положил там два класса. ими одними можно добиться невиданных тормозов, поверьте)

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

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

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


 


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


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