WEB开发网
开发学院图形图像Flash [AS3]加载图片与SWF动画的播放器 阅读

[AS3]加载图片与SWF动画的播放器

 2012-02-06 12:15:39 来源:本站整理   
核心提示:舞台大小:640*450/ Author: Whb Studio Time: 2009-10-1 QQ: 124257207 Memo: 版权没有,欢迎转载,[AS3]加载图片与SWF动画的播放器, / System.useCodePage=true;//编码支持中文. import fl.contai

舞台大小:640*450

  1. /********************************************************************  
  2. Author: Whb Studio  
  3. Time:  2009-10-1  
  4. QQ:  124257207  
  5. Memo:  版权没有,欢迎转载。  
  6. ********************************************************************/  
  7.  
  8. System.useCodePage=true;//编码支持中文.  
  9. import fl.containers.UILoader;  
  10. import fl.controls.Button;  
  11. import flash.net.*;  
  12.  
  13. /********************************************************************  
  14. 定义变量  
  15. ********************************************************************/  
  16.  
  17. //读XML文件所用变量。  
  18. var whbxml:XML;  
  19. var listcount:int=0;//文件总数量  
  20. var currentpage:int=1;//当前第几页  
  21. var totalpage:int=1;//总共几页  
  22. var currentclass:String;//当前显示的是哪个类别,此参数作为翻页时的临时中间变量。  
  23.  
  24. var list_x:int=80;//列表的X位置  
  25. var list_y:int=345;//列表的Y位置  
  26. var list_margin:int=10;//列表中各小图片之间的间隔  
  27. var smallmc_w:int=80;//列表中小图片的宽度  
  28. var smallmc_h:int=80;//列表中小图片的高度  
  29.  
  30. var xmlloader:URLLoader=new URLLoader(new URLRequest("PlayList.xml"));  
  31. //用于加载外部xml文件  
  32. xmlloader.addEventListener(Event.COMPLETE,completeHandler);  
  33. xmlloader.addEventListener(IOErrorEvent.IO_ERROR,xmlloadError);  
  34.  
  35. //定义3个按钮,用来显示XML中的不同种类  
  36. var pic_btn:Button=new Button();  
  37. var other_btn:Button=new Button();  
  38. var swf_btn:Button=new Button();  
  39.  
  40. //定义6个UILoader,1大5小  
  41. var bigmc:UILoader=new UILoader();  
  42. var smallmc1:UILoader=new UILoader();  
  43. var smallmc2:UILoader=new UILoader();  
  44. var smallmc3:UILoader=new UILoader();  
  45. var smallmc4:UILoader=new UILoader();  
  46. var smallmc5:UILoader=new UILoader();  
  47.  
  48. /********************************************************************  
  49. *所有对象的监听事件在本区域添加,请着重理解addEventListener带参传递的用法  
  50. ********************************************************************/  
  51. pic_btn.addEventListener(MouseEvent.MOUSE_DOWN,loadclass("pic"));  
  52. other_btn.addEventListener(MouseEvent.MOUSE_DOWN,loadclass("other"));  
  53. swf_btn.addEventListener(MouseEvent.MOUSE_DOWN,loadclass("swf"));  
  54. next_btn.addEventListener(MouseEvent.MOUSE_DOWN,nextpage);  
  55. prev_btn.addEventListener(MouseEvent.MOUSE_DOWN,prevpage);  
  56.  
  57. smallmc1.addEventListener(MouseEvent.MOUSE_DOWN,smalltobig(smallmc1));  
  58. smallmc2.addEventListener(MouseEvent.MOUSE_DOWN,smalltobig(smallmc2));  
  59. smallmc3.addEventListener(MouseEvent.MOUSE_DOWN,smalltobig(smallmc3));  
  60. smallmc4.addEventListener(MouseEvent.MOUSE_DOWN,smalltobig(smallmc4));  
  61. smallmc5.addEventListener(MouseEvent.MOUSE_DOWN,smalltobig(smallmc5));  
  62. bigmc.addEventListener(ProgressEvent.PROGRESS, progressHandler);//监视加载进度  
  63. bigmc.addEventListener(Event.COMPLETE, bigcompleteHandler);  
  64.  
  65.  
  66. /********************************************************************  
  67. 定义相关函数  
  68. ********************************************************************/  
  69.  
  70. //函数功能:实现addEventListener带参传递  
  71. function loadclass(parm:String):Function {  
  72. var func=function(e:Event):void{   
  73.   currentclass=parm;  
  74.   //计算页面导航信息中所用到的数据  
  75.   currentpage=1;  
  76.   listcount=whbxml.descendants(parm).descendants("file").length();//得到文件总数  
  77.   totalpage=Math.ceil(listcount/5);  
  78.   //计算完毕,显示第1页   
  79.   Showcontent(currentpage);   
  80. };  
  81. return func;  
  82. }  
  83.  
  84. //函数功能:根据页数显示内容。  
  85. function Showcontent(pageparm:int) {  
  86. UnloadAll();  
  87. try {  
  88.   smallmc1.source=whbxml.descendants(currentclass).file[pageparm*5-5].@picurl;  
  89.   smallmc2.source=whbxml.descendants(currentclass).file[pageparm*5-4].@picurl;  
  90.   smallmc3.source=whbxml.descendants(currentclass).file[pageparm*5-3].@picurl;  
  91.   smallmc4.source=whbxml.descendants(currentclass).file[pageparm*5-2].@picurl;  
  92.   smallmc5.source=whbxml.descendants(currentclass).file[pageparm*5-1].@picurl;  
  93. } catch (e) {  
  94. } finally {  
  95.   bigmc.source=smallmc1.source;  
  96.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-5].@name;  
  97.   list_txt.text="5 条/页,第 "+currentpage+" 页 , 共 "+totalpage+" 页";  
  98. }  
  99. }  
  100.  
  101. //函数功能:Xml配置文件加载成功  
  102. function completeHandler(e:Event) {  
  103. var getLoader:URLLoader=e.target as URLLoader;  
  104. if (getLoader!=null) {//如果找到了xml配置文件    
  105.   whbxml=new XML(getLoader.data);//此时,外部的xml数据被完全转存到内存whbxml文件中   
  106.   initsys();//初始化界面   
  107. }  
  108. }  
  109.  
  110. //函数功能:捕获Xml配置文件加载异常(主要是URL错误异常)  
  111. function xmlloadError(evt:IOErrorEvent) {  
  112. evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,xmlloadError);  
  113. loader_txt.text="未能找到播放列表配置文件!";  
  114. }  
  115.  
  116. function progressHandler(e:ProgressEvent):void {  
  117.   var uiLdr:UILoader = e.currentTarget as UILoader;  
  118.   loader_txt.text="正在加载数据:"+Math.round(bigmc.percentLoaded) + "%";    
  119. }  
  120. function bigcompleteHandler(event:Event):void {  
  121.   loader_txt.visible = false;    
  122. }  
  123.  
  124.  
  125. //函数功能:实现addEventListener带参传递  
  126. function smalltobig(parm:Object):Function {  
  127. var func=function(e:Event):void{   
  128.   bigmc.unload();     
  129.   bigmc.source=parm.source;   
  130.   switch(parm.name){  
  131.   case "instance25":  
  132.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-5].@name;  
  133.   break;  
  134.   case "instance29":  
  135.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-4].@name;  
  136.   break;  
  137.   case "instance33":  
  138.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-3].@name;  
  139.   break;  
  140.   case "instance37":  
  141.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-2].@name;  
  142.   break;  
  143.   case "instance41":  
  144.   name_txt.text=whbxml.descendants(currentclass).file[currentpage*5-1].@name;  
  145.   break;   
  146.   }   
  147. };  
  148. return func;  
  149. }  
  150. //函数功能:处理用户点击prev_btn事件  
  151. function prevpage(evt:MouseEvent) {  
  152. currentpage--;  
  153. if (currentpage<1) {  
  154.   currentpage=1;  
  155. }  
  156. Showcontent(currentpage);  
  157. }  
  158. //函数功能:处理用户点击next_btn事件  
  159. function nextpage(evt:MouseEvent) {  
  160. currentpage++;  
  161. if (currentpage>totalpage) {  
  162.   currentpage=1;  
  163. }  
  164. Showcontent(currentpage);  
  165. }  
  166. //函数功能:系统初始化  
  167. function initsys() {  
  168. pic_btn.y=other_btn.y=swf_btn.y=2.4;  
  169.  
  170. pic_btn.label="图像类";  
  171. pic_btn.x=2.4;  
  172. this.addChild(pic_btn);  
  173.  
  174. other_btn.label="其他类";  
  175. other_btn.x=106.4;  
  176. this.addChild(other_btn);  
  177.  
  178. swf_btn.label="动画类";  
  179. swf_btn.x=212.4;  
  180. this.addChild(swf_btn);  
  181.  
  182.  
  183. bigmc.width=350;  
  184. bigmc.height=250;  
  185. bigmc.x=125;  
  186. bigmc.y=60;  
  187. this.addChild(bigmc);  
  188.  
  189. smallmc1.width=smallmc2.width=smallmc3.width=smallmc4.width=smallmc5.width=smallmc_w;  
  190. smallmc1.height=smallmc2.height=smallmc3.height=smallmc4.height=smallmc5.height=smallmc_h;  
  191. smallmc1.y=smallmc2.y=smallmc3.y=smallmc4.y=smallmc5.y=list_y;  
  192.  
  193. smallmc1.x=list_x;  
  194. smallmc2.x=smallmc1.x+smallmc_w+list_margin;  
  195. smallmc3.x=smallmc2.x+smallmc_w+list_margin;  
  196. smallmc4.x=smallmc3.x+smallmc_w+list_margin;  
  197. smallmc5.x=smallmc4.x+smallmc_w+list_margin;  
  198.  
  199. //显示为手型链接  
  200. smallmc1.buttonMode=true;  
  201. smallmc2.buttonMode=true;  
  202. smallmc3.buttonMode=true;  
  203. smallmc4.buttonMode=true;  
  204. smallmc5.buttonMode=true;   
  205.  
  206. this.addChild(smallmc1);  
  207. this.addChild(smallmc2);  
  208. this.addChild(smallmc3);  
  209. this.addChild(smallmc4);  
  210. this.addChild(smallmc5);  
  211.  
  212. loadclass("pic");  
  213. }  
  214. //函数功能:释放空闲内存资源  
  215. function UnloadAll() {  
  216. bigmc.unload();  
  217. smallmc1.unload();  
  218. smallmc2.unload();  
  219. smallmc3.unload();  
  220. smallmc4.unload();  
  221. smallmc5.unload();  

Tags:AS 加载 图片

编辑录入:coldstar [复制链接] [打 印]
赞助商链接