Передача SWF-данных между использованием addElement вместо addChild - PullRequest
0 голосов
/ 27 марта 2012

Итак:

У меня была эта проблема (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.

1 Ответ

0 голосов
/ 27 марта 2012

Вы можете расширить Sprite.

public class Child extends Sprite
{

    public var data:Object;

    public function Child( )
    {

    }

}

и в родительском классе

// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );

// displayObject goes to container
var displayO:Child = new Child();
container.addChild( displayO );
displayO.data = data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...