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

AS2和AS3与js的通信(捕获加载进程)

时间:2011-06-09 14:37CuPlayer.com
此处是通过外部JS定义要加载的文件名,并传参给flash,flashreader必须是js中的同名函数,注意,这里的flashreader必须是在js中定义的那个函数名,不能随便起此处是通过外部JS定义要加载的文件名,并传参给flash,flashreader必须是js中的同名函数,注意,这里的flashread

一、先看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版本

//注意,这里的flashreader必须是在js中定义的那个函数名,不能随便起
 

  1. ExternalInterface.addCallback("flashreader",loadswf);  
  2.  
  3. System.useCodePage=true;  
  4. //编码支持中文.  
  5. var loader:Loader=new Loader();  
  6.  
  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.  
  24.  
  25. function loadswf(parm:String):void {       
  26.    loader.unload();        
  27.    //此处支持加载任何外部可显示对象,包括jpg,flv,swf等,如果是swf,请注意有版本区别(V>=9.0)    
  28.    loader.load(new URLRequest(parm));   
  29.       
  30.    //定义加载过程、加载异常、加载完毕,卸载四个监听事件  
  31.    //为了保证连续跟踪,下面所有监听函数,不能定义到loadswf函数的外面  
  32.    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);  
  33.    //url地址错误,需要单独捕获,try catch语句块是捕获不到的  
  34.    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioError);  
  35.    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);  
  36.    loader.contentLoaderInfo.addEventListener(Event.UNLOAD, unloadswf);  
  37. };  
  38.  
  39. //函数功能:捕获加载进度  
  40. function loadProgress(e:ProgressEvent):void {  
  41.  loader_txt.text="正在加载数据: "+Math.round(e.bytesLoaded/e.bytesTotal*100)+"%";  
  42. }  
  43. //函数功能:捕获加载异常(主要是URL错误异常)  
  44. function ioError(evt:IOErrorEvent) {  
  45.  evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,ioError);  
  46.  loader_txt.text="加载失败,未找到相关文件。";  
  47. }  
  48.  
  49. //函数功能:处理加载成功事件,特别注意:只有loader加载成功后,才能对其进行初始化设置  
  50. function loadComplete(e:Event):void {  
  51.  loader_txt.text="";//清空加载信息提示  
  52.  loader.content.x=0;  
  53.  loader.content.y=0;  
  54.  loader.content.width=800;  
  55.  loader.content.height=600;  
  56.  // 如果是swf,则用原swf的帧频进行播放  
  57.  this.stage.frameRate=loader.contentLoaderInfo.frameRate;  
  58.  // 显示所加载的对象  
  59.  this.addChild(loader);  
  60. }  
  61. //函数功能:捕获卸载事件,保证完全卸载(纠正AS3本身的卸载BUG)  
  62. function unloadswf(e:Event) {  
  63.  loader.unload();    //待完善  
  64. }  

热门文章推荐

请稍候...

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

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