最近修改了以前做的相冊,,順便把自己寫的圖片加載類放出來吧。
代碼如下:
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);
}
}
}
里面判斷加載圖片長寬的時(shí)候最好把文字域刪掉,,會(huì)影響獲取,。
用法很簡單啦:
var pic:LoadingPic=new LoadingPic(圖片地址);
呃...反正還有時(shí)間,寫個(gè)這個(gè)類讀取xml的運(yùn)用吧,,基本的構(gòu)思獲取XML的信息,,然后利用上面這個(gè)類來讀取圖片信息,然后給予簡單的事件,。那開始吧...
準(zhǔn)備:建立一個(gè)xml文件夾和文件,一個(gè)pic文件夾,,放3張圖片到pic文件夾里面分別命名為1,、2、3.和一個(gè)main.as文件,。
xml代碼:
<?xml version="1.0" encoding="UTF-8"?>
<picsite>
<pic url="pic/1.jpg"/>
<pic url="pic/2.jpg"/>
<pic url="pic/3.jpg"/>
</picsite>
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<my_xml.pic.length(); 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<my_xml.pic.length(); 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運(yùn)行通過,。點(diǎn)擊1圖片放大1倍,點(diǎn)擊2圖片2圖片放大一倍其他還原,。
前面有點(diǎn)亂as3圖片加載類(xml讀取)" src="http://image29.360doc.com/DownloadImg/2011/05/1217/11667052_1.gif" TYPE="face">,。喜歡的朋友可以自己拿去整理下,。