所以:
我遇到了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。
答案 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;