
flash as3 + xml 制作的图片浏览DEMO
功能:
⒈图片列表.
⒉控制加载的图片大小.
⒊图片切换效果(简单的遮照功能).
...
A:请问某某mc为什么控制不了?(发了段代码)
B:你在做lite?
A:没,在改客户的东东!
B:大家都用AS3了,你还在用AS1...(很鄙视)
A:呵呵,那到底是什么问题?
......(B不屑回答!)
最后A自己找到问题所在。。。
被鄙视就是我,客户的东西是AS1的,要加点东西!
哎,谁叫自己菜!!!
我是学AS2开始的,AS3还在继续学习中!
今天有空就用AS3做了这个简单的demo!
AS3跟AS2真的差很多,但是很规范很强大。
这个demo都是很基础的东西,发上来大家有需要的参考下!
DEMO.as:
package {
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.text.*;
import flash.system.System;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.xml.XMLDocument;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.filters.GlowFilter;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.*;
public class demo extends Sprite {
//定义属性
private var firstLoad:Boolean =true;
private var firsttxt:Boolean =true;
private var border:Sprite =new Sprite;
private var ThumbContainer:Sprite= new Sprite;
private var mc:MovieClip = new MovieClip;
private var txtmc:MovieClip = new MovieClip;
private var BtnPrev:MovieClip = new MovieClip;
private var BtnNext:MovieClip = new MovieClip;
private var loadContainer:Sprite = new Sprite;
private var loading:MovieClip = new MovieClip;
private var num:uint = 0;
private var snum:uint = 11;
private var pag:uint = 1;
private var len:uint;
private var XmlUrl:URLRequest;
private var XmlLoader:URLLoader;
private var PicUrl:URLRequest;
private var ThumbUrl:URLRequest;
private var loader:Loader;
private var Text:TextField;
private var _picGlowFilter:GlowFilter = new GlowFilter(0x999999,1,3,3,3,2,false,false);
private var _glowFilter:GlowFilter = new GlowFilter(0x000000,.8,2,2,4,1,true,false);
var PicUrlAry:Array = new Array();
var PicTextAry:Array = new Array();
public function demo() {
stage.scaleMode = StageScaleMode.NO_SCALE;
init();//初始化
}
private function init():void {
//初始化组件
var BtnPrev:MovieClip = getChildByName("pre") as MovieClip;
BtnPrev.addEventListener(MouseEvent.MOUSE_DOWN,preHandler);
BtnPrev.buttonMode=true;
var BtnNext:MovieClip = getChildByName("nex") as MovieClip;
BtnNext.addEventListener(MouseEvent.MOUSE_DOWN,nextHandler);
BtnNext.buttonMode=true;
//处理XML文件,处理完成后加载第一张大图和缩略图
XmlUrl = new URLRequest("piclist.xml");
XmlLoader = new URLLoader();
XmlLoader.load(XmlUrl);
XmlLoader.addEventListener(Event.COMPLETE,completeHandler);
}
//xml载入完成
function completeHandler(event:Event) {
var Xml:XML = new XML(event.target.data);
len = Xml.pic.length();
for (var i:uint=0; i<len; i++) {
PicUrlAry[i]=(Xml.pic[i].url).toString();
PicTextAry[i]=(Xml.pic[i].content).toString();
}
//载入第一张图片和缩略图
loadThumb();
loadPic(num);
}
//载入大图
function loadPic(num:uint):void {
PicUrl = new URLRequest(PicUrlAry[num]);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,PicLoadcomplete);
loader.load(PicUrl);
showText(num);
}
//载入大图完成后,显示遮罩
function PicLoadcomplete(evt:Event):void {
var a:uint=0;
var b:uint=0;
//控制图片大小,按比例缩放
a=Math.round((768/evt.target.content.width)*100);
b=Math.round((400/evt.target.content.height)*100);
if (a<100||b<100) {
if (a<b) {
evt.target.content.scaleX=a/100;
evt.target.content.scaleY=a/100;
} else {
evt.target.content.scaleX=b/100;
evt.target.content.scaleY=b/100;
}
}
mc.addChildAt((evt.target.content),0);//加载在最底层
mc.x=16+384-evt.target.content.width/2;
mc.y=17+200-evt.target.content.height/2;
addChildAt(mc,1);
RandomInMask(mc);//随机遮罩显示
if (!firstLoad) {
mc.removeChildAt(1);//移除上层的图片。
}
firstLoad = false;
}
//随机遮罩显示大图
function RandomInMask(_mc:MovieClip) {
var ran:Number;
ran =Math.round( Math.random() * 10 );
switch (ran) {
case 1 :
TransitionManager.start(_mc,{type:Blinds, direction:Transition.IN, duration:2, easing:None.easeNone, numStrips:10, dimension:0});
break;
case 2 :
TransitionManager.start(_mc,{type:Blinds, direction:Transition.IN, duration:2, easing:None.easeNone, numStrips:10, dimension:1});
break;
case 3 :
TransitionManager.start(_mc, {type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:1, shape:Iris.CIRCLE});
break;
case 4 :
TransitionManager.start(_mc, {type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:2, shape:Iris.SQUARE});
break;
case 5 :
TransitionManager.start(_mc, {type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:5, shape:Iris.CIRCLE});
break;
case 6 :
TransitionManager.start(_mc, {type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:8, shape:Iris.SQUARE});
break;
case 7 :
TransitionManager.start(_mc, {type:Fade, direction:Transition.IN, duration:9, easing:Strong.easeOut});
case 8 :
TransitionManager.start(_mc, {type:PixelDissolve, direction:Transition.IN, duration:2, easing:Regular.easeIn, xSections:10, ySections:10});
break;
case 9 :
TransitionManager.start(_mc, {type:Zoom, direction:Transition.IN, duration:2, easing:Elastic.easeOut});
default :
TransitionManager.start(_mc, {type:Wipe, direction:Transition.IN, duration:2, easing:None.easeNone, startPoint:1});
break;
}
}
//载入小图
function loadThumb():void {
while (ThumbContainer.numChildren>0) {
ThumbContainer.removeChildAt(0);
}
while (loadContainer.numChildren>0) {
loadContainer.removeChildAt(0);
}
var ni:uint=0;
if (len-pag*snum>0) {
ni=pag*snum;
} else {
ni=len;
}
var n:uint=0;
for (var i:uint=(pag-1)*snum; i<ni; i++) {
ThumbUrl = new URLRequest(PicUrlAry[i]);
loader = new Loader();
loading = new loadwait();
loader.x=70 + n * 60;
loading.x=70 + n * 60;
loader.y=465;
loading.y=465;
n++;
loadContainer.addChild(loading);
addChild(loadContainer);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ThumbLoadcomplete);
loader.load(ThumbUrl);
loader.addEventListener(MouseEvent.MOUSE_DOWN,showPic);
ThumbContainer.buttonMode=true;
ThumbContainer.addChild(loader);
}
addChild(ThumbContainer);
}
//缩略图载入完成后修改大小
function ThumbLoadcomplete(evt:Event):void {
var loaderinfo:LoaderInfo = evt.target as LoaderInfo;
loaderinfo.content.width = 50;
loaderinfo.content.height = 26;
loaderinfo.content.filters = [_picGlowFilter];
}
//缩略图的侦听事件
function showPic(event:MouseEvent):void {
var target:DisplayObject = event.target as DisplayObject;
num = ThumbContainer.getChildIndex(target)+(pag-1)*snum;
loadPic(num);
//removeChildAt(1);
}
//显示文字
function showText(num:uint) {
Text = new TextField();
Text.text=PicTextAry[num];
Text.width=200;
Text.height=15;
Text.textColor=0x000000;
Text.x=300;
Text.y=422;
Text.autoSize="center";
txtmc.addChildAt(Text,0);
addChildAt(txtmc,1);
if (!firsttxt) {
txtmc.removeChildAt(1);//移除上层的文字。
}
firsttxt = false;
}
//点击BtnPrev
function preHandler(event:MouseEvent):void {
if (pag>=2) {
pag--;
num=(pag-1)*snum;
loadThumb();
loadPic(num);
}
}
//点击BtnNext
function nextHandler(event:MouseEvent):void {
if (pag<Math.ceil(len/snum)) {
pag++;
num=(pag-1)*snum;
loadThumb();
loadPic(num);
}
}
}
}
[下载] FLASH PIC DEMO
大家多给点意见。。。