用flash製作相冊的源碼(as3 xml 圖片瀏覽)

主要功能:
          ⒈圖片列表.
           ⒉控制加載的圖片大小.
          ⒊圖片切換效果(簡單的遮照功能).


3od471637.jpg

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 );

     }  
 

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章