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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.09.2008, 08:06
darkvam вне форума Посмотреть профиль Отправить личное сообщение для darkvam Найти все сообщения от darkvam
  № 1  
Ответить с цитированием
darkvam
[+1 20.08.08]

Регистрация: Aug 2008
Сообщений: 52
По умолчанию Как гарантировано удалить мувиклип?

история такая. ролик сильно тормозит. Но все создаваемые мувики тщательно отслеживаю и удаляю removeMovieClip(). счётчик мувиков показывает, что мувиков в сцене не больше 40, однако через несколько минут игры ролик начинает просто ужасно тормозить. Я уже все пути испробывал. есть ли более надёжный способ удалить мувик?

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

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
поиск-утечка памяти

Старый 10.09.2008, 12:37
darkvam вне форума Посмотреть профиль Отправить личное сообщение для darkvam Найти все сообщения от darkvam
  № 3  
Ответить с цитированием
darkvam
[+1 20.08.08]

Регистрация: Aug 2008
Сообщений: 52
было уже. я искал - никак не относиться к моей проблемме. ничего не помогает.

Старый 10.09.2008, 12:54
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 4  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
У тебя почти наверника мувики заносятся в массив. Ты удаляеш мувиклип а массив в итоге все ростет и ростет, а ты делаеш сравнение по всем элементам массива... Ну или что небудь вроде этого). Ищи утечки


Последний раз редактировалось qazwsx; 10.09.2008 в 15:43.
Старый 10.09.2008, 15:17
darkvam вне форума Посмотреть профиль Отправить личное сообщение для darkvam Найти все сообщения от darkvam
  № 5  
Ответить с цитированием
darkvam
[+1 20.08.08]

Регистрация: Aug 2008
Сообщений: 52
qazwsx
точно так наверное и есть((( а как можно избавиться? удалять значение ещё и из массива?

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

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Цитата:
удалять значение ещё и из массива
Ну да, а как ещё? (:
__________________
while(1) {}

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Код:
mc.removeMovieCLip();
delete mc;
Сборщик мусора удаляет объект из памяти только когда никто на него больше не ссылается, по этому нужно удалять все ссылки на объект.


Последний раз редактировалось Obi; 10.09.2008 в 16:12.
Старый 10.09.2008, 16:19
darkvam вне форума Посмотреть профиль Отправить личное сообщение для darkvam Найти все сообщения от darkvam
  № 8  
Ответить с цитированием
darkvam
[+1 20.08.08]

Регистрация: Aug 2008
Сообщений: 52
Division
скажи пожалуйста как именно, ибо метод shift() похоже не действует - array._leight не уменьшается((

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

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Ну значит самый простой для понимания способ:
Допустим у тебя нужно удалить i-й элемент массива arr.
Делаешь так:
Код:
arr[i]=arr[arr.length-1];
arr.pop();
__________________
while(1) {}

Старый 11.09.2008, 08:34
darkvam вне форума Посмотреть профиль Отправить личное сообщение для darkvam Найти все сообщения от darkvam
  № 10  
Ответить с цитированием
darkvam
[+1 20.08.08]

Регистрация: Aug 2008
Сообщений: 52
Division
при этом, если в коде есть функция типа:

Код:
for (var a = 0; a<Arraster.length; a++) {
		Arraster[a]._y += 3;
		if (Arraster[a]._y>=210) {
			points -= 20;
			_root.panel.pointsnum.text = points;
			_root.panel.pointsnum.replaceText();
			Arraster[a].unloadMovie();
			Arraster[a].removeMovieClip();
			Arraster[a].pop();
		}
}
то в этом случае получается, что points -= 20; будет работать каждый кадр, тоесть массив будет считать Arraster[a] предыдущий за удалённым из массива элемент. тоесть получается нескончаемый цикл. мне же нужно чтобы points -= 20; было одинарным действием которое происходит после положительного ответа на ХитТест. почему появляется такая проблемма?

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

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

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


 


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


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