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

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

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

Регистрация: Jan 2010
Сообщений: 38
По умолчанию Бесконечное добавление мувиклипов в массив.

У меня следующая проблема: объект бесконечно добавляет себя в массив, постепенно засоряя тем самым память. Лаги появляются далеко не скоро, но все равно это непорядок, длина массива бесконечно увеличивается.


Код AS1/AS2:
var boxes = [];
//каждая платформа при старте вызывает эту функцию и передаёт себя как параметр
function addBox(obj) {
	boxes.push(obj);}
В мувиклипе я пишу

Код AS1/AS2:
_parent.addBox(this);
Далее у меня каждый мувиклип в массиве некоторое количество раз копируется, у него меняется имя (добавляется id), но надо чтобы количество объектов в массиве не увеличивалось постоянно, а отражало действительность.
Получается что находясь в кадре, мувиклип бесконечно добавляется в массив. Как сделать, чтобы он добавлялся лишь один раз?

Я пробовал делать добавление в массив в первом кадре мувиклипа а потом на последнем кадре писал
Код AS1/AS2:
gotoAndPlay(2);
чтобы повторно избегать первого кадра - это не работает, он простон е добавляется в массив.

Кроме того, известно что длина массива равна глобальной переменной и не может быть больше ее.
Код AS1/AS2:
boxes.length=_global.counter;
- но этот код неправилньый, по сути. То есть я хочу ограничить число объектов в массиве до реального числа объектов, находящихся на экране на данный момент.

Надеюсь на помощь.

Добавлено через 4 часа 12 минут
Если упростить - все сводится к этому:
Как сделать проверку, есть ли в массиве объект с таким именем или нет, и не добавлять его повторно?


Проблема решена.


Последний раз редактировалось CHLameR; 05.02.2010 в 20:44.
Старый 04.08.2011, 10:05
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 2  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
можете рассказать как вы решили проблему? очень нужно!

Старый 04.08.2011, 16:27
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 3  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Array#indexOf() вероятно. Или проход по элементам вручную

Старый 04.08.2011, 17:32
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 4  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
а можно по точнее?

Старый 04.08.2011, 21:14
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Так устроит?
Код AS1/AS2:
function pushToArray( arr:Array, elem ) : Boolean
{
    var i:Number = arr.length;
    while (i-- > 0 && arr[i] != elem)
    {
    }
    if (i > -1)
        return false;
 
    arr.push(elem);
    return true;
}


Последний раз редактировалось i.o.; 04.08.2011 в 21:17.
Старый 08.08.2011, 09:27
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 6  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
можете мне помочь? у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от yo3o Посмотреть сообщение
можете мне помочь? у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?
Как это относится к теме топика?
__________________
Отряд Котовскага

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

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
yo3o, вы явно о чем-то сугубо своем...

Старый 08.08.2011, 10:57
yo3o вне форума Посмотреть профиль Отправить личное сообщение для yo3o Найти все сообщения от yo3o
  № 9  
Ответить с цитированием
yo3o

Регистрация: Jun 2010
Сообщений: 153
просто я думал что у автора топика была та же проблема. можете как можно отловить ошибку?

Старый 08.08.2011, 11:08
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 10  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
У меня следующая проблема: объект бесконечно добавляет себя в массив, постепенно засоряя тем самым память. Лаги появляются далеко не скоро, но все равно это непорядок, длина массива бесконечно увеличивается.
и
Цитата:
у вот такая проблема: сделал платформера (вид сбоку) вот играю минуты три-пять
и бах! герой начинает падать и ему пофиг на все платформы! в чем может быть проблема?
Найдите 3 отличия.

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

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

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


 


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


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