Во-первых, вы должны знать, что нет точного ответа на ваш вопрос, поскольку он зависит от вашего загруженного SWF (вы знаете это или нет, его списка отображения ...), но я приведу простой пример для объяснения вещи, и вы должны приспособить его к своему делу.
Для этого примера предположим, что у нас очень простой SWF (загруженный SWF), который содержит TextField (называемый txt_url
) и кнопку (MovieClip, называемую btn_go
).
Кнопка btn_go
откроет URL-адрес, введенный в текстовом поле txt_url
.
Для нашего второго SWF (загрузчик), мы будем использовать Loader
объект, чтобы загрузить наш первый (который в этом случае будет Loader.content
), а затем мы установим URL (txt_url
текста) и вызвать нажмите на кнопку btn_go
.
Так вот пример кода нашего loader.swf
:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, on_SWFLoad);
loader.load(new URLRequest('loaded.swf'));
addChild(loader);
function on_SWFLoad(e:Event): void
{
// get our loaded SWF
var loaded_swf:DisplayObjectContainer = DisplayObjectContainer(loader.content);
// because we know our target objects, we can use "getChildByName()"
// set the URL
TextField(loaded_swf.getChildByName('txt_url')).text = 'http://www.example.com';
// open the URL in the browser by triggering the click event on the "btn_go" button
MovieClip(loaded_swf.getChildByName('btn_go')).dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
Этот пример непосредственно установить и открыть URL в браузере после загрузки SWF, конечно, мы можем выполнить это действие после нажатия или что-то еще, но это просто простой пример, чтобы показать вам, как вы можете это сделать.
Теперь проблема в том, что мы ничего не знаем о загруженном SWF и его дочерних элементах (именах, глубинах, ... .), в этом случае мы должны делать больше усилий, чтобы делать то, что хотим: мы должны пройти весь список отображения загруженного SWF, чтобы идентифицировать целевые объекты.
Возвращаясь к нашему примеру, и скажем, что мы знаем только, что есть TextField и кнопка на сцене, так что наш код может быть, как это, например:
function on_SWFLoad(e:Event): void
{
var loaded_swf:DisplayObjectContainer = DisplayObjectContainer(loader.content);
var num_children:int = loaded_swf.numChildren;
for(var i:int = 0; i < num_children; i++)
{
var child:DisplayObject = loaded_swf.getChildAt(i);
if(child is TextField)
{
trace(child.name); // gives : txt_url
TextField(child).text = 'http://www.example.com';
}
else
{
if(child.hasEventListener(MouseEvent.CLICK))
{
trace(child.name); // gives : btn_go
child.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
}
}
}
Опять же, это очень просто пример, чтобы показать, как мы можем продолжить ...
...
Тогда о прохождении значений (Params) между СФБ, посмотрите на my answer of this question, где у вас есть маленький пример для этого.
Для получения дополнительной информации о Display programming (список отображения, экранный объект, контейнер отображения объектов, ...) посмотреть here.
Надеюсь, что это поможет.
Свойство 'numChildren', и, вероятно, SWF, который вы загружаете, записывается так, чтобы он добавлял свой контент непосредственно в' stage'. – Vesper
@ Vesper, тогда как я мог бы с ним взаимодействовать? MovieClip # stage возвращает значение null. –
Пока вы ожидаете ответа SWFLoader/Flex ... Что произойдет, если вы используете код AS3 (внутри '') для загрузки SWF с использованием API-интерфейса Loader? –