宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

[AS2-AS3]AS外部加载图片教程

2016-10-13 00:16:48 点击量:5 标签: 收藏本文

AS2.0中有MovieClip和全局中有loadMovie函数可以动态加载图片,但是这不是异步加载,而且没法知道图片大小。在AS3.0中,有Loader类来实现从外部载入swf和各种图片。

效果如下,载入的过程中会有进度条提示,载入完成过后可以根据图片的尺寸进行缩放,按比例的缩小放在400×300的方框中,居中显示

AS代码

  1. progress.visible = false;  
  2. btnSubmit.addEventListener(MouseEvent.CLICK,btnSubmitClickHandler);  
  3. function btnSubmitClickHandler(e:MouseEvent) {  
  4. loadPicture(ddlUrl.value);  
  5. }  
  6.  
  7. var loader:Loader;  
  8. function loadPicture(url:String) {  
  9. if(loader == null){  
  10. loader = new Loader();  
  11. }else{  
  12. loader.unload();  
  13. txtAlert.text = "";  
  14. }  
  15. loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHd);  
  16. loader.contentLoaderInfo.addEventListener("ioError",errorHd);  
  17. var request:URLRequest = new URLRequest(url);  
  18. var context:LoaderContext = new LoaderContext(true);  
  19. loader.load(request,context);  
  20. progress.visible = true;  
  21. }  
  22.  
  23. var maxHeight:int = container.height;  
  24. var maxWidth:int = container.width;  
  25. function completeHd(e:Event) {  
  26. txtAlert.text = "* Load success!";  
  27. var pic:Bitmap = loader.content as Bitmap;  
  28. pic.smoothing = true;  
  29. var currentWidth:int = loader.width;  
  30. var currentHeight:int = loader.height;  
  31. if(currentWidth > maxWidth){  
  32. currentWidth = maxWidth;  
  33. currentHeight = currentWidth/loader.width * loader.height;  
  34. }  
  35. if(currentHeight > maxHeight){  
  36. currentHeight = maxHeight;  
  37. currentWidth = currentHeight/loader.height * loader.width;  
  38. }  
  39. loader.content.width = currentWidth;  
  40. loader.content.height = currentHeight;  
  41.  
  42. loader.x = (maxWidth - currentWidth)/2;  
  43. loader.y = (maxHeight - currentHeight)/2;  
  44. container.addChild(loader);  
  45. progress.visible = false;  
  46. }  
  47. function errorHd(e:Event){  
  48. progress.visible = false;  
  49. txtAlert.text = "* Url is invalid, Please try again for another url!";  


关键在于对Loader类的使用,Loader具有contentLoaderInfo属性,此属性是一个LoaderInfo类的实例,用来控制加载外部资源的进度,因此就可以在contentLoaderInfo上注册各种事件,这里只用了Complete事件,用于加载完成时调用。

Loader还具有content属性,Loader实例本身就是一个可视对象,content也是一个可视对象,如果加载的地址是一个图片的话,content是一个Bitmap对象,所以可以通过转型来使得载入的图片在缩小的时候消除锯齿,将Bitmap的smoothing属性设置为true即可。

 

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室