我有一个主影片剪辑,可以根据按钮点击加载适当的swfs。按钮和相应的swfs通过XML加载。我可以在此处找到适合实现此目的的方法:Sample Code
现在,这似乎工作正常。但是,我的问题是,为每个按钮单击调用一个单独的SWF,我想维护一个通用的SWF并只更改相应的XML内容,使其更具动态性。
这就是我被困住的地方,我决定在xml上的每个按钮上添加一个ID并将其传递给Common SWF(子swf),这样根据ID,我可以加载相应的XML内容,而不是为每个按钮单击调用单独的swfs。 XML现在看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<menu>
<item>
<label>Gallery1</label>
<url><![CDATA[swf/gallery.swf]]></url>
<id>01</id>
</item>
<item>
<label>Gallery2</label>
<url><![CDATA[swf/gallery.swf]]></url>
<id>02</id>
</item>
</menu>
现在,我可以推送此ID并将其跟踪到主影片剪辑,但不知道如何将其传递给Common / Child SWF。我不是AS3的专家,我每天都在学习它。所以,如果有人可以帮助我,我会非常感激。提前谢谢。
答案 0 :(得分:1)
SWF-Button必须实现作为id属性的setter的函数。这个方法可以引用Loader-SWF方法taht读取Clicks。
样品:
//LOADER-SWF
// loader code:
Loader.load(urlReference);
// ... //
//in load/add to stage event
var child:IChild = Loader.content;
child.setID(1, clickFunction);
//IChild.as
//Interface
public interface IChild {
function method setID(id:uint, callBack:Function):void;
}
//BUTTON.swf
//implement IChild
private var _id:uint;
private var _callBack:Function;
// ... //
public function method setID(id:uint, callBack:Function):void{
_id=id;
_callBack=callBack;
}
// ... //
private function onClick(e:MouseEvent):void{
_callBack(_id);
}