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

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

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

Регистрация: Jun 2010
Сообщений: 37
КорДум
А ссылка на один экземпляр только одна может быть? Отмирает перменная cur_movie, которая определена в функции, и отмирает ссылка вместе с ней. А какое отношение имеет спрайт к функции? Он же как был до выполнения функции, так и остался после. По идее спрайт, это как переменная, описаная вне функции. Точнее объект, в котором есть переменная (динамический массив или еще что-то типа того) для хранения ссылок на child'ов.
Я, кстати, вообще запутался как выделяется память в AS3... Почему, например, память выделяется не сразу под весь MovieClip, а во время его проигрывания, и для каждого кадра отдельно... Т.е. Я проигрываю MovieClip с последовательностью из 1000 jpeg'ов, так вот память отжирается все это время. В смысле, с каждым кадром свободной памяти становится все меньше.


Последний раз редактировалось ignition; 07.06.2010 в 11:39.
Старый 07.06.2010, 11:45
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 22  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Я не могу найти статью в инете, так что дам номер страницы в книге Мука "ActionScript 3.0 Подробное руководство". То, что вас так интересует, описано на странице 537. Там и про ссылки, и про обнуление, и про память.
Про вторую часть вашего поста ничего сказать не могу - я не сведущ в этом.

Добавлено через 12 минут
[IMG]http://s003.***********/i203/1006/96/457626f1719ft.jpg[/IMG]
__________________
тут я

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

Регистрация: Jun 2010
Сообщений: 37
Спасибо. Прочитал.
И что здесь расходится с тем, что я написал? Ссылок на один объект, если верить тексту, может быть несколько. Одна из них (cur_movie) отмирает. А в video_container_mc ссылка есть. Или в объекте parent нет ссылки на child?

Старый 07.06.2010, 12:11
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 24  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Как только срабатывает метод removeChild(), ссылка-индекс автоматически удаляется из списка отображения контейнера. Там в конце написано, что после удаления клип может продолжать проигрываться. Также могут срабатывать оставшиеся события. У вас есть такое?
__________________
тут я

Старый 07.06.2010, 12:19
ignition вне форума Посмотреть профиль Отправить личное сообщение для ignition Найти все сообщения от ignition
  № 25  
Ответить с цитированием
ignition

Регистрация: Jun 2010
Сообщений: 37
Может продолжать проигрыватся. Я же писал, что в последнем фрейме MovieClip'ов у меня stop() стоит.

Старый 07.06.2010, 12:25
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 26  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Я иссяк. Остается надеяться на ответы гуру.
__________________
тут я

Старый 08.06.2010, 00:09
ignition вне форума Посмотреть профиль Отправить личное сообщение для ignition Найти все сообщения от ignition
  № 27  
Ответить с цитированием
ignition

Регистрация: Jun 2010
Сообщений: 37
Ок. Есть предложение отвлечься от теории... и решить одну проблему - как мне получить доступ к ссылке в моей схеме? В момент, когда я делаю:
Код AS3:
video_container_mc.removeChildAt(0);
имени объекта (точнее имени экземпляра) уже нет, обратиться к нему по имени уже не получится. Нужно как-то выходить на ссылку через video_container_mc. Как это делается?


Последний раз редактировалось ignition; 08.06.2010 в 00:18.
Старый 08.06.2010, 00:50
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 28  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Нужно как-то выходить на ссылку через video_container_mc. Как это делается?
Код AS3:
var mc:MovieClip = video_container_mc.getChildAt(глубина) as MovieClip;
По поводу умирания ссылок и тд - если объект находится в дисплей-листе (то есть добавлен на сцену), то мы можем к нему обратиться - только что написал как это можно сделать. А раз к нему можно обратиться, то из памяти он никуда не денется.
__________________
...вселенская грусть

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

Регистрация: Jun 2010
Сообщений: 37
gloomyBrain
Т.е. так? :
Код AS3:
var counter:int=-1;
var forward:Array=new Array(clip1_mc,clip2_mc,clip3_mc,clip4_mc,clip5_mc,clip6_mc);
stop();
.....
function goNext(event:MouseEvent) {
	if (video_container_mc.numChildren) {
		var mc_for_kill:MovieClip = video_container_mc.getChildAt(0) as MovieClip;
		video_container_mc.removeChildAt(0);
		mc_for_kill=null;
	};
	counter=(counter+1)%6;
	var cur_movie:MovieClip=new forward[counter];
	video_container_mc.addChild(cur_movie);
};
.....
next_btn.addEventListener(MouseEvent.CLICK, goNext);
Добавлено через 6 минут
Проверил. Обратиться можем, ошибок не вылезает... т.е. можно сделать вывод, что память не освободилась. Так?
Кстати, а в AS3 есть какие-то средства контроля памяти? Есть какая-то ф-ция выводящая инфу?
По идее, если бы не было ссылки, то уже здесь:
Код AS3:
video_container_mc.removeChildAt(0);
вылезла бы ошибка

PS Изменение кода ни как не повлияло на проблемы с памятью. Она все равно забита.


Последний раз редактировалось ignition; 08.06.2010 в 01:30.
Старый 08.06.2010, 01:37
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 30  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Проверил. Обратиться можем, ошибок не вылезает... т.е. можно сделать вывод, что память не освободилась. Так?
Да, именно так


Цитата:
Есть какая-то ф-ция выводящая инфу?
System.totalMemory

Цитата:
вылезла бы ошибка
Откуда быть ошибке?
К объекту можно обратиться как через clip1_mc, так и через getChildAt(0) - это ссылки на один и тот же объект.
Объект станет доступным для "поедания" gc только после выполнения
Код AS3:
clip1_mc = null;
removeChildAt(0);
ЗЫ
кстати, после removeChildAt(0) пустых глубин не остается, то есть все объекты в контейнере "упадут" на одну позицию. Теперь на нулевом индексе будет сидеть объект, который раньше был на 1-м
__________________
...вселенская грусть

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

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

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


 


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


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