怎么搞自己的网站,科技网站哪个好,wordpress 首页折叠,wordpress安全设置教程as3项目要调用外部swf里的类有3种方法#xff1a; 1.将外部的swf发布为swc#xff0c;使用时将swc引用添加到相应的项目中#xff0c;这应该是最简单的一种引用。不过当项目中的类或组件比较多时就会使项目发布生成的swf文件大小过大; 2.通过资源绑定外部的#xff0c;然后… as3项目要调用外部swf里的类有3种方法 1.将外部的swf发布为swc使用时将swc引用添加到相应的项目中这应该是最简单的一种引用。不过当项目中的类或组件比较多时就会使项目发布生成的swf文件大小过大; 2.通过资源绑定外部的然后直接通过类名获取。如[Embed(sourceassets/icon/skin.swf,symbolBtn_Max)],这种方法也会引起swf文件过大; 3.通过域来来获取外部swf里的绑定类这种方法可以在需要用时才去加载相应的swf文件然后再获取所需要的类。 下面是根据第三种方法来获取所需要的类 package com.mobiano.flipbook.pageeditor
{import com.flasht.tui.display.TArrow;import com.mobiano.flipbook.config.FlipBookConfig;import com.tflash.Components.util.SWFLoader;import flash.display.DisplayObject;import flash.errors.IOError;import flash.events.Event;import flash.events.IOErrorEvent;import flash.events.ProgressEvent;import flash.utils.Dictionary;public class PlugInManager{public static var allExternalClass:Object{};//public var loadingQueue:Object{};//public var swfLoader:SWFLoader;public var loadingQueue:Dictionarynew Dictionary();private static var canInstace:Booleanfalse;private static var instace:PlugInManager;private var filePrefix:String./files/pageConfig/;private var fileSuffix:String.swf;public function PlugInManager(){if(!canInstace){throw new Error(Cant new PlugInManager); }}public static function getInstace():PlugInManager{if(instacenull){canInstacetrue;instacenew PlugInManager();canInstacefalse;}return instace;} public function getComponent(target:TAnnoPlugIn,cpName:String,extClassName:String):void{if(cpNamenull||cpName.length1||extClassNamenull||extClassName.length1)return ;if(allExternalClass.hasOwnProperty()){//return allExternalClass[cpName];var swfLoader:SWFLoaderallExternalClass[cpName];var cl:ClassswfLoader.GetClass(extClassName);if(cl!null){var extObj:IPlugInInterfacecreateSWFClass(cl);if(extObj!null){target.extObjextObj;}}}else{load(target,cpName,extClassName);}//return null;}public function getSwfUrl(cpName):String{if(cpName!null){return filePrefixcpNamefileSuffix;}return null;}protected function getURLFrom(url:String):String{return com.mobiano.flipbook.config.FlipBookConfig.getURLForm(url);}private function load(target:TAnnoPlugIn,cpName:String,extClName:String):void{var swfUrl:StringgetSwfUrl(cpName);if(swfUrlnull||swfUrl.length1)return;swfUrlgetURLFrom(swfUrl);var swfLoader:SWFLoadernew SWFLoader(swfUrl);swfLoader.addEventListener(Event.COMPLETE,onComplete);swfLoader.addEventListener(ProgressEvent.PROGRESS,onProgress);swfLoader.addEventListener(IOErrorEvent.IO_ERROR,onIOError);var obj:Object{target:target,compontName:cpName,extClassName:extClName};//loadingQueue[cpName]obj;loadingQueue[swfLoader]obj;swfLoader.Load();}private function onComplete(evt:Event):void{trace(evt.currentTarget);if(evt.currentTarget is SWFLoader){var loader:SWFLoaderevt.currentTarget as SWFLoader;if(loader in loadingQueue){var obj:ObjectloadingQueue[loader];if(obj[target]obj[compontName]obj[extClassName]){var cpName:Stringobj[compontName];var extClassName:Stringobj[extClassName];allExternalClass[cpName]loader;var cl:Classloader.GetClass(extClassName);var target:TAnnoPlugInobj[target];if(cl!null){//allExternalClass[cpName]cl;var extObj:IPlugInInterfacecreateSWFClass(cl);if(extObj!null){target.extObjextObj;}}}//loader.GetClass(//var target:TAnnoPlugInloadingQueue[loader];} }}private function createSWFClass(cl:Class):IPlugInInterface{var extObj:IPlugInInterface;try{if(cl!null){extObjnew cl();}}catch(e:Error){return null;}return extObj;}private function onProgress(evt:ProgressEvent):void{}private function onIOError(evt:IOError):void{throw new Error(Load swf error:evt);}}
}package com.tflash.Components.util
{import flash.display.DisplayObject;import flash.display.Loader;import flash.display.LoaderInfo;import flash.events.Event;import flash.events.EventDispatcher;import flash.events.IEventDispatcher;import flash.events.IOErrorEvent;import flash.events.ProgressEvent;import flash.net.URLRequest;import flash.system.ApplicationDomain;import flash.system.LoaderContext;[Event(namecomplete, typeflash.events.Event)][Event(nameprogress,typeflash.events.ProgressEvent)][Event(nameio_error,typeflash.events.IOErrorEvent)]public class SWFLoader extends EventDispatcher{private var loader:Loader;private var content:DisplayObject;private var loadComplete:Booleanfalse;private var url:String;public function SWFLoader(url:String){this.urlurl;}public function Load(url:Stringnull):void{if(url!null){this.urlurl;}loadCompletefalse;if(loadernull){loadernew Loader();}else{loader.unloadAndStop(true);if(loader.contentLoaderInfo.hasEventListener(Event.COMPLETE)){loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoadComplete);}if(loader.contentLoaderInfo.hasEventListener(ProgressEvent.PROGRESS)){loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);}if(loader.contentLoaderInfo.hasEventListener(IOErrorEvent.IO_ERROR)){loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError)}}var context:LoaderContextnew LoaderContext();context.applicationDomainnew ApplicationDomain(ApplicationDomain.currentDomain);var request:URLRequestnew URLRequest(this.url);loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoadProgress);loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);loader.load(request,context);}private function onLoadProgress(evt:ProgressEvent):void{this.dispatchEvent(evt);}private function onLoadComplete(evt:Event):void{evt.currentTarget.removeEventListener(Event.COMPLETE,onLoadComplete);evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);content(evt.currentTarget as LoaderInfo).content;loadCompletetrue;this.dispatchEvent(new Event(Event.COMPLETE));}private function onLoadIOError(evt:IOErrorEvent):void{evt.currentTarget.removeEventListener(Event.COMPLETE,onLoadComplete);evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onLoadIOError);this.dispatchEvent(evt);}/*** 获取当前ApplicationDomain内的类定义** name类名称必须包含完整的命名空间,如 Grave.Function.SWFLoader* info加载swf的LoadInfo不指定则从当前域获取* return获取的类定义如果不存在返回null*/public function GetClass(name:String):Class{if(loadCompleteloader!null){if(loader.contentLoaderInfo.applicationDomain.hasDefinition(name)){return loader.contentLoaderInfo.applicationDomain.getDefinition(name) as Class;}else{return null;}}return null;}public function GetContent():DisplayObject{return content;}public function GetLoader():Loader{return loader;}}
}转载于:https://www.cnblogs.com/zhepama/p/3467153.html