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

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

时间:2012-01-11 18:09播放器
[AS3]加载图片与SWF动画的播放器,当前显示的是哪个类别,此参数作为翻页时的临时中间变量

舞台大小: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();  

 

热门文章推荐

请稍候...

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

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