·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

AS2与AS3加载外部对象的区别(如何捕获加载进程)

时间:2012-01-11 18:05baidu.com
AS2与AS3加载外部对象的区别(捕获加载进程),通过外部JS定义要加载的文件名,并传参给flash,flashreader必须是js中的同名函数

一、先看AS2:

  1. //创建一动态文本框,用于提示加载进程  
  2. _root.createTextField("hint",0,200,180,200,20);  
  3. //新建一个box用于装载外部 swf,并定义坐标;  
  4. var mcBox:MovieClip = this.createEmptyMovieClip("mcBox",this.getNextHighestDepth());  
  5. mcBox.x=0;  
  6. mcBox.y=0;  
  7. //新建一个事件听众  
  8. var loadListener:Object = new Object();  
  9. //新建一个MovieClipLoader侦听对象   
  10. var mcLoader:MovieClipLoader = new MovieClipLoader();  
  11. //绑定侦听  
  12. mcLoader.addListener(loadListener);  
  13.  
  14. //注意:此处是通过外部JS定义要加载的文件名,并传参给flash,flashreader必须是js中的同名函数。  
  15. //as2版本  
  16. ExternalInterface.addCallback("flashreader",null,loadswf);  
  17. //as3版本  
  18. //ExternalInterface.addCallback("flashreader",loadswf);  
  19.  
  20. function loadswf(parm:String){  
  21. mcBox.unloadMovie();//这句用于释放内存,非常重要  
  22. mcLoader.loadClip(parm,mcBox); //将外部对象,加载到mcBox  
  23. }  
  24. //加载过程中  
  25. loadListener.onLoadProgress=function(target,loadedBytes,totalBytes ){  
  26. hint.text="正在加载文档:"+Math.ceil((loadedBytes/totalBytes)*100)+" %"; //计算已经载入的百分比;  
  27. }  
  28. //加载完毕  
  29. loadListener.onLoadComplete = function(target){  
  30. InitFlashPaper();  
  31. }  
  32. //加载错误  
  33. loadListener.onLoadError = function() {  
  34. hint.text = "Sorry! 未能找到相关文件,无法加载!";  
  35. };  
  36.  
  37. //定义一个函数重置载入的FlashPaper;  
  38. function InitFlashPaper(){  
  39. this.onEnterFrame = function (){  
  40. if(mcBox.showZoomUI != undefined){   
  41. mcBox.setCurrentZoom(100);//设置缩放百分比   
  42. mcBox.showPrintUI(false);   
  43. delete this.onEnterFrame;   
  44. }  
  45. }  

二、再看AS3版本

  1. //注意,这里的flashreader必须是在js中定义的那个函数名,不能随便起  
  2. ExternalInterface.addCallback("flashreader",loadswf);  
  3.  
  4. System.useCodePage=true;  
  5. //编码支持中文.  
  6. var loader:Loader=new Loader();  
  7. /**********************************************************************  
  8. 下面是加载、加载过程、加载完毕等诸事件的处理函数,如无必要,勿需更改。  
  9. **********************************************************************/  
  10. //在预设主显示区中心建立一动态文本框,用以显示加载进度信息  
  11. var inputFormat:TextFormat = new TextFormat();  
  12. inputFormat.font="宋体";//字体  
  13. inputFormat.size=12;//字体大小  
  14. inputFormat.color=0XFF0000;  
  15. var loader_txt:TextField = new TextField();  
  16. loader_txt.type=TextFieldType.DYNAMIC;//文本格式  
  17. loader_txt.defaultTextFormat=inputFormat;  
  18. loader_txt.height=20;  
  19. loader_txt.width=200;  
  20. loader_txt.x=400;  
  21. loader_txt.y=500;  
  22. this.addChild(loader_txt);  
  23. function loadswf(parm:String):void {   
  24. loader.unload();   
  25. //此处支持加载任何外部可显示对象,包括jpg,flv,swf等,如果是swf,请注意有版本区别(V>=9.0)   
  26. loader.load(new URLRequest(parm));   
  27. //定义加载过程、加载异常、加载完毕,卸载四个监听事件  
  28. //为了保证连续跟踪,下面所有监听函数,不能定义到loadswf函数的外面  
  29. loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);  
  30. //url地址错误,需要单独捕获,try catch语句块是捕获不到的  
  31. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioError);  
  32. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);  
  33. loader.contentLoaderInfo.addEventListener(Event.UNLOAD, unloadswf);  
  34. };  
  35. //函数功能:捕获加载进度  
  36. function loadProgress(e:ProgressEvent):void {  
  37. loader_txt.text="正在加载数据: "+Math.round(e.bytesLoaded/e.bytesTotal*100)+"%";  
  38. }  
  39. //函数功能:捕获加载异常(主要是URL错误异常)  
  40. function ioError(evt:IOErrorEvent) {  
  41. evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,ioError);  
  42. loader_txt.text="加载失败,未找到相关文件。";  
  43. }  
  44. //函数功能:处理加载成功事件,特别注意:只有loader加载成功后,才能对其进行初始化设置  
  45. function loadComplete(e:Event):void {  
  46. loader_txt.text="";//清空加载信息提示  
  47. loader.content.x=0;  
  48. loader.content.y=0;  
  49. loader.content.width=800;  
  50. loader.content.height=600;  
  51. // 如果是swf,则用原swf的帧频进行播放  
  52. this.stage.frameRate=loader.contentLoaderInfo.frameRate;  
  53. // 显示所加载的对象  
  54. this.addChild(loader);  
  55. }  
  56. //函数功能:捕获卸载事件,保证完全卸载(纠正AS3本身的卸载BUG)  
  57. function unloadswf(e:Event) {  
  58. loader.unload(); //待完善  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器