Итак:
У меня была эта проблема (Error: addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.
), и я следовал рекомендованному решению:
// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );
// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );
-> прекрасно работает (помимо размера и компоновки есть еще одна проблема), потому что мой "дочерний" swf загружается.
Используя этот метод, как я могу передать данные от родителя ребенку (и чтобы ребенок прочитал их)? Он никогда не должен переходить от Child к Parent, за исключением закрытия SWF-объекта Child (если у вас есть для этого идея, он, похоже, не любит метод unload).
Я должен спросить, потому что почти каждый метод, который я нашел для передачи данных между swfs, использует класс Loader для вызова другого, и я не добился успеха с этим вообще. Я использую FlashBuilder 4.6 для кодирования и упаковки обоих swfs.
Спасибо за ввод! Я, вероятно, буду продолжать обновлять этот вопрос с несколькими изменениями, поскольку я получаю больше информации или думаю о чем-то новом, чтобы добавить. Спасибо за помощь!
РЕДАКТ. 1 - 27 марта, 17:16 EST
Создан класс:
Child.as :
package classes
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
public class Child extends Sprite
{
public var location:String;
public function Child()
{
super();
var loader:Loader = new Loader;
var urlReq:URLRequest = new URLRequest("http://myswf.com/myswf.swf");
loader.load(urlReq);
addChild(loader);
}}}
и я открываю дочерний swf следующим способом:
//in main code
public var containter:UIContainer = new UIComponent;
public var Locale:String;
private function CallSwf():void
{
container.x=0;
container.y=0;
container.width = totalSize.width;
container.height = totalSize.height;
addElement(container);
var displayO:Child = new Child;
container.addChild(displayO);
displayO.data = Locale;
if (container.visible = true) {
totalSize.visible = false;
}
}
Что мне нужно сделать, так это получить строку Locale для чтения Child swf.