Я занимаюсь написанием библиотеки, которая может дополняться из вне. Тоесть swf работает с сервером, и сервер вызывает какуе-то функциональность у swf. В случае её отсутствия, сервер предоставляет ссылку на swf модуль с функциональностью. В общем-то я предполагал, что будет невидимый movieclip в который будут погружаться swf. Я провёл кое-какое тестирование и обнаружил что это не обязательно.
Я создал 2 файла. Тот, который подгружает и тот, который подгружается.

Код:
function Func()
{
trace("Hello from "+this);//Owner name output.
}
_root.FC = Func;//function upload to _root
Это программа из которой берёться функция.

Код:
var MCL:MovieClipLoader = new MovieClipLoader();
var l1:Object = new Object();//listener object
l1.onLoadInit = function(mc) {
trace("1");
_root.Target.Func();//i am trying to call function from uplaoded MC
trace("2");
_root.FC();//i am trying to call function that was copyed from uplaoded MC
trace("3");
_root.Target.removeMovieClip();
_root.Target.Func(); //trying to call function after removal
trace("4");
_root.FC(); //caling copyed function
};
MCL.addListener(l1);
_root.createEmptyMovieClip("Target",0);
MCL.loadClip("HelloWorld.swf", _root.Target);//Uploaded file should be in the same directory as this swf
А это программа, которая подгружает функции.
При запуске я получаю следующий вывод:
1
Hello from _level0.Target
2
Hello from _level0
3
4
Hello from _level0
Выходит что, не смотря на удаление MC предоставившего функцию функция в текущем MC не перестаёт работать.
Я бы хотел поинтересоваться у местных Guru, на сколько корректно так поступать и может ли это привести к ошибкам.