WEB开发网
开发学院图形图像Flash [AS2-AS3]AS外部加载图片教程 阅读

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

 2012-02-06 12:13:41 来源:本站整理   
核心提示:AS2.0中有MovieClip和全局中有loadMovie函数可以动态加载图片,但是这不是异步加载,[AS2-AS3]AS外部加载图片教程,而且没法知道图片大小,在AS3.0中,content是一个Bitmap对象,所以可以通过转型来使得载入的图片在缩小的时候消除锯齿,有Loader类来实现从外部载入swf和各种图片

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即可。

 

Tags:AS AS AS

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