Как удалить что-то в Action Script 3 - PullRequest
0 голосов
/ 10 сентября 2010

Я пытаюсь удалить простые объекты из памяти, но когда я вызываю removeChildren, использование памяти возросло: / А почему нет?И как я могу удалить объекты?

package {
    import flash.display.DisplayObject;
    import flash.display.SimpleButton;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.system.System;

    public class Main extends Sprite {

        public function Main() 
        {
            for (var i:int = 0 ; i < 1000;i++) {
                var addBouncerButton:SimpleButton = new SimpleButton();
                addBouncerButton.x = 100;
                addBouncerButton.y = 10;
                addBouncerButton.name = "Btn"+i;
                addChild(addBouncerButton);
            }
            stage.addEventListener(Event.ENTER_FRAME, update);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, remove);
        }

        private function remove(e:KeyboardEvent):void 
        {
            trace("Children : " + this.numChildren);
            trace(System.totalMemory * 1024 + " kb");
            if(this.numChildren > 0)
                var o:DisplayObject =  removeChildAt(this.numChildren - 1);
            o = null;
        }

        private function update(event:Event):void
        {
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Вы можете использовать ключевое слово delete, чтобы поставить объект в очередь на сборку мусора. Этот сборщик мусора может занять некоторое время (несколько мс), чтобы выполнить свою работу, и не должно быть конечных ссылок на ваши объекты.

Для лучшего понимания as3 GC вы можете прочитать эту прекрасную статью: http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

Удачи!

0 голосов
/ 10 сентября 2010

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

...