1. Случайное создание объектов (недосмотр);
2. Если графика была создана с помощью flash cs, и графика располагалась на stage то эти объекты плодятся (как не парадоксально).
Самое элементарное что можно сделать это просто считать сколько графических объектов у нас лежит...
// ставим прослушиватель на stage
stage.removeEventListener(Event.ENTER_FRAME, tick);
....
private var ticks:uint = 0;
private var tf:TextField = new TextField();
private var last:uint = getTimer();
public function tick(evt:Event):void
{
ticks++;
var now:uint = getTimer();
var delta:uint = now - last;
if (delta >= 1000)
{
var countObject:uint = countObjects(stage);
tf.text = 'Count Object Display: '+ countObject;
addChild(tf);// что бы было всегда выше всего на экране
ticks = 0;
last = now;
}
}
//функция рекурсивная так что будет бежать и по детям детей
private function countObjects(obj:DisplayObjectContainer):uint
{
if (!obj) return 0;
var count:uint = 0;
count += obj.numChildren;
// бежим о всем детям
for (var i:int = 0; i < obj.numChildren; i ++)
count += countObjects(obj.getChildAt(i) as DisplayObjectContainer);
return count;
}
Теперь мы можем видеть растет ли количество, если да, то осталось посмотреть в коде откуда у нас утечка)))
Если есть предложения, то буду рад услышать ваши предложения...
User referenced to your post from Утечка памяти в actionscript saying: [...] Оригинал взят у в Утечка памяти в actionscript [...]
ОтветитьУдалитьПолезная штука, надо будет опробовать.
ОтветитьУдалитьprivate var timer:Timer = new Timer(1000);
ОтветитьУдалитьpublic function Main() {
timer.addEventListener(TimerEvent.TIMER, onTick);
timer.start();
}
private function onTick(e:TimerEvent):void {
var countObject:uint = countObjects(stage);
tf.text = "" + countObject;
setChildIndex(tf, numChildren - 1);
}
private function countObjects(obj:DisplayObjectContainer):uint {
if (!obj) return 0;
var count:uint = 0;
count += obj.numChildren;
for (var i:int = 0; i < obj.numChildren; ++i)
count += countObjects(obj.getChildAt(i) as DisplayObjectContainer);
return count;
}
- - - - -
а в каких ситуациях плодятся объекты stage?
интересно было бы смоделировать
Я же писал, когда графика была создана, например во adobe flash cs, и лежит на экране вместо того чтобы хранится в библиотеке
ОтветитьУдалитькидаю на сцену дин. текст, рисую круг и превращаю в мувик, рисую квадрат и оставляю так.
ОтветитьУдалитьЗапускаю – всё время пишет 5 объектов.
а теперь сделай где-нибудь 150 символов на стаге и повесь на них события, чтобы на них ссылки оставались
ОтветитьУдалитьзавтра попробую
ОтветитьУдалитьда, попробуй и напиши о своих результатах, всем будет интересно
ОтветитьУдалитьну вот
ОтветитьУдалитьпосадил 160 мувиков
каждый слушает ENTER_FRAME и плавно меняет альфу
полдня висело и как было 322, так и осталось
доктор, что я делаю не так?
может адобовцы исправили этот баг, надо будет самому проверить
ОтветитьУдалить