getDefinition - это метод ApplicationDomain , который возвращает определение класса, пространства имен или функции.
getDefinitionByName - это пакет-уровневая функция из flash.utils , которая возвращает объект Class, который можно использовать для создания новых объектов.Определение должно быть уже загружено где-то в вашем ApplicationDomain.
Причина, по которой вы не можете создать getDefinitionByName с внешним SWF-файлом, заключается в том, что он загружается в отдельный ApplicationDomain.Ваш второй пример работает, потому что вы нацелены на правильный ApplicationDomain.Чтобы ваш первый пример работал, вы должны загрузить внешний SWF-файл в ваш текущий ApplicationDomain следующим образом:
var request:URLRequest = new URLRequest("externalSWF.swf");
var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
var loader:Loader = new Loader();
loader.load(request,context);
Это работает, потому что он передает текущий ApplicationDomain как свойство контекста загрузчика.