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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.02.2015, 00:35
sersir вне форума Посмотреть профиль Отправить личное сообщение для sersir Найти все сообщения от sersir
  № 3  
Ответить с цитированием
sersir
 
Аватар для sersir

Регистрация: Sep 2008
Сообщений: 102
Я заметил, что при дублировании мувиклипа, я его добавляю в массив, то есть myArr.push(par).

Если через ENTER_FRAME дублируется много мувиклипов, то начинаются почти сразу же жесткие лаги.

То есть после добавления мувиклипа через addChild(par), ниже я прописываю myArr.push(par)

Хотя утечки памяти не наблюдается.

Вот простой пример моей механики:

Код AS3:
import flash.display.MovieClip;
 
var myArr:Array = [];
abc.startDrag(true);
var mymc:MovieClip = new MovieClip();
addChild(mymc);
 
init();
 
function init()
{
    for (var i=0; i<25; i++)
    {
        var par:Particle = new Particle();
        par.x = Math.random() * stage.stageWidth;
        par.y = Math.random() * stage.stageHeight;
        mymc.addChildAt(par,0);
        myArr.push(par);
    }
    this.addEventListener(Event.ENTER_FRAME, hitTes);
}
 
function hitTes(e:Event):void
{
    for (var j=0; j<myArr.length; j++)
    {
        if (abc.hitTestObject(myArr[j]))
        {
            if (myArr[j].parent)
            {
                myArr[j].parent.removeChild(myArr[j]);
            }
 
        }
    }
}
Добавлено через 16 минут
С памятью все нормально, а вот ЦП начинает кушать ого-го

Пример кода:

Код AS3:
function startFire(evt: Event): void {
			bullet = new Bullet();
			mymc.addChildAt(bullet,0);
			myArr.push(bullet); // Добавляем пули в массив - ЗАПИСЬ В МАССИВ СИЛЬНО ЗАГРУЖАЕТ ЦП
			bullet.rotation = soldier.rotation + Math.random() * 20;
			bullet.x = soldier.x + Math.cos(bullet.rotation * Math.PI / 180) * 25;
			bullet.y = soldier.y + Math.sin(bullet.rotation * Math.PI / 180) * 25;
			bullet.addEventListener(Event.ENTER_FRAME, bulletFire, false, 0, true);
	}
}


Последний раз редактировалось sersir; 23.02.2015 в 04:39.
Создать новую тему   Часовой пояс GMT +4, время: 19:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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