在使用addElement而不是addChild之间传递swf数据

时间:2012-03-26 20:42:46

标签: flash flex

所以:

我遇到了this问题(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,除了关闭Child swf(如果您对此有所了解,它似乎并不喜欢卸载方法)。

我不得不问,因为我发现在swfs之间传递数据的几乎所有方法都是使用Loader类将另一个调用到视图中,而我根本没有成功。我正在使用FlashBuilder 4.6对两个swfs进行编码和打包。

感谢您的投入!我可能会通过多次编辑不断更新这个问题,因为我得到更多信息或想到要添加的新内容。谢谢你的帮助!

编辑1 - 3月27日,美国东部时间17:16

创建了一个类:

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;
}
}

我需要做的是获取儿童swf读取的字符串Locale。

1 个答案:

答案 0 :(得分:0)

你可以扩展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;