Что происходит, когда вы объявляете свои NetConection
и NetStream
внутри функции, так это то, что область действия этой переменной является локальной для этой функции. Это означает, что ничто другое не ссылается на созданный вами NetConnection
, и поэтому сборщик мусора подметает его во время следующего запуска (вот почему вы видите переменную времени).
Когда вы объявляете это просто в операторе if, переменные попадают в область действия фильма и содержат ссылку на них и, следовательно, не собирают мусор.
Я не знаю, какова архитектура для остальной части вашего кода, но если вы хотите использовать функции для хранения вашего кода, попробуйте поместить объявление для var nc:NetConnection = new NetConnection();
непосредственно перед оператором loadSong();
.
Архитектурно, вы можете реорганизовать свой код вне фрейма, но на самом деле это может не стоить того, если это всего лишь пара строк кода. Просто зависит от вашего проекта.
Для получения дополнительной информации о сборке мусора, ознакомьтесь с Общие сведения о сборке мусора в Flash Player 9 (там сказано, Flash Player 9, но это применимо и к 10).