最近修改了以前做的相册,顺便把自己写的图片加载类放出来吧。
代码如下:
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图片放大一倍其他还原。
前面有点乱。喜欢的朋友可以自己拿去整理下。