好书推荐资料:flash?as3图片加载类(xml读取)

来源:百度文库 编辑:中财网 时间:2024/04/28 19:21:51

最近修改了以前做的相册,顺便把自己写的图片加载类放出来吧。

 

代码如下:

package {
 import flash.display.MovieClip;
 import flash.text.TextField;
 import flash.display.Bitmap;
 import flash.display.BitmapData;
 import flash.net.URLRequest;
 import flash.display.Loader;
 import flash.display.LoaderInfo;
 import flash.events.Event;
 import flash.events.ProgressEvent;
 public class LoadingPic extends MovieClip {
  public var loadtest:TextField;
  public var picDate:BitmapData;
  private var _loader:Loader;
  public var loadImage:Bitmap;
  public var loadNumber:uint;
  public var id:uint;

  public var Click:Boolean=false;
  public function LoadingPic(str:String) {
   init();
   loadtest.text="";
   loadtest.textColor=0x000000;
   loadtest.x=100;
   this.addChild(loadtest);
   loadtre(str);
  }
  private function init() {
   picDate=new BitmapData(151,152,true,0x000000);//这里的151,152是图片的大小
   _loader = new Loader();
   loadtest = new TextField();
  }
  private function loadtre(url:String) {
   var _request=new URLRequest(url);
   _loader.load(_request);
   _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
   _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
  }
  public function onProgress(e:Event){
   var m_info:LoaderInfo=e.target as LoaderInfo;
   loadNumber = (m_info.bytesLoaded/m_info.bytesTotal)*100;
   loadtest.text=loadNumber.toString()+'%';
  }
  public function onComplete(e:Event) {
   picDate.draw(_loader);//可以用matrix来控制图片
   loadImage=new Bitmap(picDate);
   addChild(loadImage);
  }
 }
}

 

里面判断加载图片长宽的时候最好把文字域删掉,会影响获取。

用法很简单啦:

var pic:LoadingPic=new LoadingPic(图片地址);

 

呃...反正还有时间,写个这个类读取xml的运用吧,基本的构思获取XML的信息,然后利用上面这个类来读取图片信息,然后给予简单的事件。那开始吧...

准备:建立一个xml文件夹和文件,一个pic文件夹,放3张图片到pic文件夹里面分别命名为1、2、3.和一个main.as文件。

 

xml代码:



   
   
   

 

main.as代码:

 

package {
 import flash.display.Loader;
 import flash.display.Sprite;
 import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.events.Event;
 import flash.display.Loader;
 import flash.events.MouseEvent;
 public class mainClass extends Sprite {
  private var my_xml:XML;
  private var my_URLRequest:URLRequest;
  private var my_URLLoader:URLLoader;
  private var my_Loader:Loader;
  private var my_pic_Arr:Array=[];
  private var _left:uint=0;
  private var _top:uint=0;
  public function mainClass() {
   var _xmllist:String="xml/pic.xml";
   my_URLRequest=new URLRequest(_xmllist);
   my_URLLoader=new URLLoader  ;
   my_URLLoader.load(my_URLRequest);
   my_URLLoader.addEventListener(Event.COMPLETE,xmlLoaded);
  }
  private function xmlLoaded(e:Event):void {
   my_xml=new XML(my_URLLoader.data);
   for (var i:uint=0; i    var loadPic:LoadingPic=new LoadingPic(String(my_xml.pic[i].@url));
    loadPic.x=_left;
    loadPic.y=_top;
    loadPic.id=i;
    _left+=loadPic.width+151;
    if (_left+loadPic.width>stage.stageWidth) {
     _left=0;
     _top+=loadPic.height+152;
    }
    my_pic_Arr.push(loadPic);
    addChild(loadPic);
    loadPic.addEventListener(MouseEvent.CLICK,changBig);
   }

  }
  private function changBig(evt:MouseEvent):void {
   for (var i:uint=0; i    var pic:LoadingPic=my_pic_Arr[i];
    pic.id=i;
    if (evt.target.Click==false) {
     if (pic.id==evt.target.id) {
      pic.scaleX=2;
      pic.scaleY=2;
      evt.target.Click=true;
     } else {
      pic.scaleX=1;
      pic.scaleY=1;
      evt.target.Click=false;
     }

    } else {
     if (pic.id==evt.target.id) {
      pic.scaleX=1;
      pic.scaleY=1;
      evt.target.Click=false;
     } else {
      pic.scaleX=1;
      pic.scaleY=1;
      evt.target.Click=false;
     }
    }
   }
  }

 }

}

 

ok运行通过。点击1图片放大1倍,点击2图片2图片放大一倍其他还原。

前面有点乱。喜欢的朋友可以自己拿去整理下。