将主要swf中的ID传递给子swf

时间:2009-10-13 13:17:03

标签: xml flash actionscript-3 action

我有一个主影片剪辑,可以根据按钮点击加载适当的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的专家,我每天都在学习它。所以,如果有人可以帮助我,我会非常感激。提前谢谢。

1 个答案:

答案 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);
}