|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这个播放器非常小,只需花一点点时间下载,对于在体验网页上的多媒体效果是个很好的开始。
后面先容了FlashAS3教程:Dot类,接着先容ClassLoader类!
次要用处:
1、在用flash做项目标时分,把一些元件,经由过程设置链接类,然后利用这个类,经由过程getClass办法便可把这个素材拿上去
2、将很多很多的类分库到分歧的swf中,然后经由过程挪用swf,到达挪用类库的功效,然后经由过程getClass来猎取类(详见例2)
index.base.net.ClassLoader类解说:
加载swf文件,而且经由过程挪用getClass猎取类,也能够猎取定名空间大概函数的界说
机关函数
publicfunctionClassLoader(obj:Object=null,lc:LoaderContext=null)
参数1能够是字符串,能够是ByteArray,假如为前者则接纳load办法,后者接纳loadBytes办法
参数2是创立带有指定LoaderContext工具的ClassLoader实例,LoaderContext能够设置是不是加载跨域文件,使用程序域等,详见官方LoaderContext类解说!
load办法
publicfunctionload(_url:String,lc:LoaderContext=null):void
加载文件
参数1是加载地点,参数2见机关函数
loadBytes办法
publicfunctionloadBytes(bytes:ByteArray,lc:LoaderContext=null):void
加载字节文件
参数1是字节数据,参数2见机关函数
getClass办法
publicfunctiongetClass(className:String):Object
猎取一个大众界说,能够是类,也能够是定名空间大概函数界说
参数1是猎取class的完全包加类名,好比我们的这个类完全界说称号是index.base.net.ClassLoader
详见例子
hasClass办法
publicfunctionhasClass(className:String):Boolean
前往是不是含有该大众界说
参数1见getClass办法
clear办法
publicfunctionclear():void
清空
url属性
publicvarurl:String
猎取url属性
loader属性
publicvarloader:Loader
猎取loader属性
例子1:
这是一个假造人物抽象的举措包,个中包括了8种分歧的举措
在利用ClassLoader加载这个swf的举措包后,便可利用getClass来挪用这些素材,并且能够反复的new这些元件,来到达屡次反复利用
importindex.base.net.ClassLoader;
varcl:ClassLoader=newClassLoader;
cl.load("main.swf");
cl.addEventListener(Event.COMPLETE,fun);
functionfun(e:Event){
vartmp=cl.getClass("drag");
addChild(newtmp);
}
例子2:
将设我有一个类库,有这么三个类
然后把它编译成swf
我们别的建一个文件,来加载这个所谓的类库
importindex.base.net.ClassLoader;
varcl:ClassLoader=newClassLoader;
cl.load("main.swf");
cl.addEventListener(Event.COMPLETE,fun);
functionfun(e:Event){
vartmp1=cl.getClass("index.base.net.ByteLoader");
trace(tmp1)
vartmp2=cl.getClass("index.base.net.ClassLoader");
trace(tmp2)
vartmp3=cl.getClass("index.base.geom.Dot");
trace(tmp3)
}
/**
*trace的了局:
*[classByteLoader]
*[classClassLoader]
*[classDot]
*/
我们的目标就到达了!
接上去是源代码!
packageindex.base.net{
importflash.display.Loader;
importflash.net.URLRequest;
importflash.utils.ByteArray;
importflash.events.Event;
importflash.events.ProgressEvent;
importflash.events.EventDispatcher;
importflash.system.LoaderContext;
publicclassClassLoaderextendsEventDispatcher{
publicvarurl:String;
publicvarloader:Loader;
//机关函数
publicfunctionClassLoader(obj:Object=null,lc:LoaderContext=null){
if(obj!=null){
if(objisByteArray){
loadBytes(objasByteArray,lc);
}elseif(objisString){
load(objasString,lc);
}else{
thrownewError("参数毛病,机关函数第一参数只承受ByteArray或String");
}
}
}
//加载
publicfunctionload(_url:String,lc:LoaderContext=null):void{
url=_url;
loader=newLoader;
loader.load(newURLRequest(url),lc);
addEvent();
}
//加载字节
publicfunctionloadBytes(bytes:ByteArray,lc:LoaderContext=null):void{
loader=newLoader;
loader.loadBytes(bytes,lc);
addEvent();
}
//入手下手侦听
privatefunctionaddEvent():void{
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressFun);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeFun);
}
//停止侦听
privatefunctiondelEvent():void{
loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,progressFun);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,completeFun);
}
//加载乐成,公布乐成事务
privatefunctioncompleteFun(e:Event):void{
delEvent();
dispatchEvent(e);
}
//加载历程
privatefunctionprogressFun(e:ProgressEvent):void{
dispatchEvent(e);
}
//猎取界说
publicfunctiongetClass(className:String):Object{
returnloader.contentLoaderInfo.applicationDomain.getDefinition(className);
}
//是不是含有该界说
publicfunctionhasClass(className:String):Boolean{
returnloader.contentLoaderInfo.applicationDomain.hasDefinition(className);
}
//扫除
publicfunctionclear():void{
loader.unload();
loader=null;
}
}
}
不是MX版本升级到MX2004时的那么简单,而是实现了新的飞跃。 |
|