查看文章
 
FLASH AS3 简单相册 ┆ FLASH PIC DEMO
2008-09-16 14:34


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

大家多给点意见。。。


类别:【flash】||添加到搜藏 |分享到i贴吧|浏览(955)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu