まだ、publicなプロパティがあって、完成とはいえない。
loaderのcontent(DisplayObject)を自分にaddChildする。

Actionscript:
  1. /*-------------------------
  2. 外部画像を読み込み、
  3. 格納したSpriteを返す
  4. setting
  5. autoLoad:Boolean
  6. autoAttach:Boolean
  7. ----------------------------*/
  8. package info.sunagimo.loader{
  9. import flash.display.*;
  10. import flash.net.URLRequest;
  11. import flash.net.URLLoader;
  12. import flash.events.*;
  13.  
  14. public class ImageLoader extends Sprite {
  15. private var _url:String;
  16. private var _autoLoad:Boolean = true;
  17. private var _autoAttach:Boolean = true;
  18. private var _smoothing:Boolean = true;
  19. private var _urlLoader:URLLoader;
  20. private var _info:LoaderInfo;//bytesLoaded / bytesTotal
  21. private var _content:DisplayObject;
  22. public var loader:Loader = new Loader();
  23. public var myURLLoader:URLLoader;
  24. public static const LOAD_COMPLETE:String="load complete";
  25. public static const PROGRESS:String="progress";
  26. /*---------------------------------------------------------------------------------
  27. ■読み込み進行具合の検知
  28. ---------------------------------------------------------------------------------*/
  29. public function ImageLoader(u:String,args:Object=null) {
  30. _url=u;
  31. for(var value:String in args) { 
  32. if(this["_"+value]!=undefined){
  33. this["_"+value] = args[value];
  34. }else{
  35. trace(this+" function:ImageLoader args:"+value+" is undefined");
  36. }
  37. }
  38. if(_autoLoad){
  39. load();
  40. }
  41. }
  42. /*---------------------------------------------------------------------------------
  43. ■読み込み開始
  44. ---------------------------------------------------------------------------------*/
  45. public function load():Loader{
  46. _info = loader.contentLoaderInfo;
  47. _info.addEventListener(Event.COMPLETE,_onLoaded);
  48. _info.addEventListener(ProgressEvent.PROGRESS,_onProgress);
  49. var urlReq:URLRequest = new URLRequest(_url);
  50. _urlLoader = new URLLoader(urlReq);
  51. loader.load(urlReq);
  52. return loader;
  53. }
  54. /*---------------------------------------------------------------------------------
  55. ■イベント
  56. ---------------------------------------------------------------------------------*/
  57. private function _onLoaded(event:Event):void {
  58. _info.removeEventListener(Event.COMPLETE,_onLoaded);
  59. _info.removeEventListener(ProgressEvent.PROGRESS,_onProgress);
  60. _content = loader.content;
  61. if(_smoothing){
  62. var bmp:Bitmap = Bitmap(_content);
  63. bmp.smoothing = true;
  64. }
  65. if(_autoAttach){
  66. addChild(_content);
  67. }
  68. dispatchEvent(new Event(ImageLoader.LOAD_COMPLETE));
  69. }
  70. /*---------------------------------------------------------------------------------
  71. ■読み込み進行具合の検知
  72. ---------------------------------------------------------------------------------*/
  73. private function _onProgress(e:Event):void{
  74. dispatchEvent(new Event(ImageLoader.LOAD_COMPLETE));
  75. }
  76. public function getProgress(type:String=""):Number{
  77. var ret:Number;
  78. ret = Math.floor(_info.bytesLoaded/_info.bytesTotal);
  79. if(type=="%"){
  80. ret*=100;
  81. }
  82. return ret;
  83. }
  84. /*---------------------------------------------------------------------------------
  85. SETTER GETTER
  86. ---------------------------------------------------------------------------------*/
  87. public function get info():LoaderInfo{
  88. return _info;
  89. }
  90. public function get content():DisplayObject{
  91. if(_content == null){
  92. trace(this+"ERROR:get content() content is undefined");
  93. return null;
  94. }else{
  95. return _content;
  96. }
  97. }
  98. }
  99. }

使い方
Actionscript:
  1. package {
  2. import flash.display.*;
  3. import flash.events.*;
  4. import info.sunagimo.loader.*;
  5. [SWF(backgroundColor="0x330000")]
  6. public class Test2 extends Sprite{
  7. private var lo:ImageLoader;
  8. public function Test2(){
  9. lo = new ImageLoader("mac_wp01.jpg");//引数に画像のURLをいれる
  10. //addChild(lo); //ここでaddChildしても読み込みが完了したら自動で表示
  11. lo.addEventListener(ImageLoader.LOAD_COMPLETE,_onLoaded);
  12. }
  13. private function _onLoaded(e:Event):void{
  14. addChild(lo);
  15. }
  16. }
  17. }