同一目录下的两个类A,B,要在A类显示B类里的影片剪辑,那么要在A里定义B的对象b,且要addChild(b),举例说明
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
public class B extends Sprite
{
private var login:MovieClip;
private var l:Loader ;
public function B()
{
l = new Loader();
var url:URLRequest = new URLRequest("res/ui.swf");
l.load(url);
l.contentLoaderInfo.addEventListener(Event.COMPLETE,complete);
}
private function complete(e:Event):void
{
var myclass:Class = l.contentLoaderInfo.applicationDomain.getDefinition("Login") as Class;
login = new myclass;
addChild(login);
}
}
}
package
{
import flash.display.Sprite;
[SWF(width="1000", height="580", backgroundColor="#ffffff", frameRate="17")]//和影片剪辑的图片大小一致防止失真
public class A extends Sprite
{
private var b:B;
public function A()
{
b = new B();//只是取到了B类的一个对象,还没有addChild
addChild(b);
}
}
}
其实有时候可以用addChild(this)来实现,我在开发项目时,PlayerOperate251处,我是想在lookHandler加上那个详细信息面板(点查看按钮就出现),然后在面板上调整小头像的位置,于是我就detailInfoUI=new PlayerInfo()一下(detailInfoUI为在PlayerOperate类中定义的PlayerInfo类的对象),在类PlayerInfo里面的构造函数里面有addChild详细信息面板的对像,但是详细面板却没有显示。因为没有将detailInfoUI addChild。
在PlayerInfo类里还有一个show函数,里面有MainUIMediator.mainUI. addChild(this);这里的this指的是PlayerInfo类,而detailInfoUI就是PlayerInfo类的对象,因此如果在PlayerOperate类中调用一下show函数就相当于将PlayerInfo的类对象detailInfoUI给addChild了。这样就无需在PlayerOperate类中写addChild(detailInfoUI)了。