Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   У объекта Sound не срабатывает событие onLoad (http://www.flasher.ru/forum/showthread.php?t=116900)

egrik 16.10.2008 14:08

chingachgoog, большое спасибо за комментарии, пожалуйста, прокомментируйте, почему если в эту контрукцию добавить следующую мелочь:

Код:

_root.onEnterFrame = function():Void
{
        delete this.onEnterFrame;
        var t = new Sound();
        t.onLoad = function(a):Void
        {
                trace(a);
                t;
        }
        t.loadSound('data/snd/bg.mp3', false);
}

то все будет работать, как и положено. Почему, если в onLoad обратиться к этому самому t, просто обратиться, даже не выполнять никаких действий, то все ок :eek:

chingachgoog 16.10.2008 14:35

Очень интересный случай. Дело в следующем.
Локальная переменная t указывает на созданный объект Sound. Но локальная переменная существует только пока существует объект активации функции onEnterFrame. Как только объект активации гибнет, то вместе с ним гибнет и локальная переменная t. Вследствии этого на объект Sound уже не указывает ни одна ссылка и потому он удаляется уборщиком.
Но вы поставили ссылку на объект внутри этого объекта! Теперь объект неубиваем :)

egrik 16.10.2008 16:38

Цитата:

Сообщение от chingachgoog (Сообщение 770734)
Очень интересный случай. Дело в следующем.
Локальная переменная t указывает на созданный объект Sound. Но локальная переменная существует только пока существует объект активации функции onEnterFrame. Как только объект активации гибнет, то вместе с ним гибнет и локальная переменная t. Вследствии этого на объект Sound уже не указывает ни одна ссылка и потому он удаляется уборщиком.
Но вы поставили ссылку на объект внутри этого объекта! Теперь объект неубиваем :)


Большое спасибо за разъяснения, совсем забыл про уборщика.


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

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