艺虎动画 > AS3+XML分页相册重要代码

AS3+XML分页相册重要代码

翼虎动漫   2011-1-17

利用FLASH+as3开发可分页的相册,加载XML,在XML中修改数据,这里面的重点就是结合XML,难点就是分页时数据读取后,进行拆分。根据XML的长度再进行分页读取,加载图片这些都比较简单,随后附上代码。

通过AS3加载XML,在XML中修改图片连接地址等,可随意修改数据。。。
先看演示吧:
http://as63.net/flashcode/xiangce/as3fenye/index.htm

全部代码:

//=========初始化==========  
stop();  
//页数,默认0表示第一页  
var curPage_num:Number = 0;  
//每页容量  
var sizPage_num:Number = 15;  
var countPage:int;  
var countImage:int;  
var currentImages:Array=[];  
//每排张数  
var pai_num:Number = 5;  
//图片宽度、高度  
var width_num:Number = 80;  
var height_num:Number = 80;  
//图片与图片之间的间隔  
var jia_num:Number = 20;  
//=============================  
var url_array:Array = new Array();  
var my_xml:XML;  
var my_urlloader:URLLoader=new URLLoader();  
my_urlloader.load(new URLRequest("xml/img.xml"));  
my_urlloader.addEventListener(Event.COMPLETE,_showxml);  
function _showxml(e):void {  
    my_xml=new XML(e.currentTarget.data);  
    for (var i:uint=0; i<my_xml.pic.length(); i++) {  
        var my_Obj:Object = new Object();  
        my_Obj.src = my_xml.pic[i].@name;  
        url_array.push(my_Obj);  
    }  
    countImage=url_array.length;  
    countPage=Math.ceil(countImage/sizPage_num);  
    show_func(0);  
}  
 
function remvoeAllImages():void {  
    var len:int=currentImages.length;  
    var item:DisplayObject;  
    for (var i:int=0; i< len; i++) {  
        item=currentImages[i];  
        removeChild(item);  
        item=null;  
    }  
    currentImages=[];  
}  
function show_func(_page:Number) {  
    remvoeAllImages();  
    var my_loader:Loader;  
    var startIndex:int=curPage_num*sizPage_num;  
    var endIndex:int=startIndex+sizPage_num;  
    if (endIndex>countImage-1) {  
        endIndex=countImage;  
    }  
    for (var d:Number = startIndex; d<endIndex; d++) {  
        my_loader=new Loader();  
        var tmp:MovieClip = new MovieClip();  
        tmp.x = 20+d%pai_num*(width_num+jia_num);  
        tmp.y = 20+Math.floor((d-startIndex)/pai_num)*(height_num+jia_num);  
        my_loader.load(new URLRequest(url_array[d].src));  
        tmp.addChild(my_loader);  
        tmp.addEventListener(MouseEvent.CLICK,_trace);  
        addChild(tmp);  
        tmp._i=d;  
        currentImages.push(tmp);  
        function _trace(e:MouseEvent):void {  
            trace(e.currentTarget.name);  
            txt_show.text="您选择了第:"+e.currentTarget._i+"张相片";  
        }  
    }  
 
}  
function _next(e:MouseEvent) {  
 
    if (curPage_num< countPage-1) {  
        curPage_num++;  
        show_func(curPage_num);  
 
    }  
 
}  
function _pre(e:MouseEvent) {  
    if (curPage_num>0) {  
        curPage_num--;  
        show_func(curPage_num);  
 
    }  
}  
btn_pre.txt.text="上一页";  
btn_next.txt.text="下一页";  
btn_pre.txt.selectable=false;  
btn_next.txt.selectable=false;  
btn_pre.addEventListener(MouseEvent.CLICK,_pre);  
btn_next.addEventListener(MouseEvent.CLICK,_next);