论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

Flash AS教程_XML+MovieClipLoader实现多图动态载入

文章类别:Flash AS | 发表日期:2010-3-29 11:01:04

XML+MovieClipLoader实现多图动态载入添加分页

21视频教程网3月28日整理

添加了分页效果

查看效果

源文件也已经更新。

在做分页的时候,遇到了一些问题,包括变量的传递,程序的流程等等,确实有些头大,昨天晚上躺在吊床上,还想了一段时间呢,嘿嘿,不过总算是出来了。谢谢大家的支持!

---------------------------------------------------
修正了翻页后链接实效的问题,不好意思了,:)

源文件 have already updated。


---------------------------------------------------

本以为网上这样的教程多的是,随便一抓就是一大把,结果不甚理想,不过也看到了一些有用的文章。

还是自己动手丰衣足食吧,我们知道MovieClipLoader载入单图,还是比较简单的,但如果是多图呢,如何建立监听?如何在一副图片加载完后load下一张图片?如何与XML结合?

让我们一个一个来,首先是监听的问题,这么多图,不能新建n个object,然后分别对这几个object监听,效率太低,所以只能建立一个监听,余下的任务就是如何实现多图载入了。

基本思路:

先给id赋值1,然后通过判断id与总图片数的大小,来决定是否加载下一张图片就像这样:
复制内容到剪贴板
代码:
myObj.onLoadComplete = function() {
    if (id<=nums) {//一个图片加载完成后,判断id与nums的值,如果小于nums继续加载
        id++;
        loadpic(id);
    }
};
然后在loadpic(id)函数里执行
复制内容到剪贴板
代码:
myCL.loadClip(imgurl, loadpic_mc);
就可以继续加载了。

最后是与XML结合的问题,其实也满简单的,当加载完外部xml时,执行相应的函数就行了,就像这样:
复制内容到剪贴板
代码:
myXML.onLoad = function(suc) {
    if (suc) {
        loadStart();//载入完成后执行loadStart函数
    }
};
基本思路就是这样,贴上源码:
复制内容到剪贴板
代码:
var id = 1;
var myXML:XML = new XML();
myXML.ignoreWhite = true;
myXML.load("list.xml");//载入xml
myXML.onLoad = function(suc) {
    if (suc) {
        loadStart();//载入完成后执行loadStart函数
    }
};
var myObj:Object = new Object();
myObj.onLoadComplete = function() {
    if (id<=nums) {//一个图片加载完成后,判断id与nums的值,如果小于nums继续加载
        id++;
        loadpic(id);
    }
};
myObj.onLoadInit = function(tar) {//加载完成后,设置图片大小
    tar._width = 85;
    tar._height = 53;
    tid = id-1;
    //将loading和灰色背景设为不可见,并给按钮加上事件
    //这里有个小技巧就是将tid赋予_btn.pid;方便将来调用
    _root["loader"+tid+"_mc"].loading_mc._visible = false;
    _root["loader"+tid+"_mc"].bg1_mc._visible = false;
    _root["loader"+tid+"_mc"]._btn.pid = tid;
    _root["loader"+tid+"_mc"]._btn.onRelease = function() {
        ttid = this.pid;
        url = myList[ttid].childNodes[0];//取得xml文件对应的url
        getURL(url);
    };
};
var myCL:MovieClipLoader = new MovieClipLoader();
function loadStart() {
    myList = myXML.firstChild.childNodes;
    nums = myList.length;//得到图片数
    for (var i = 1; i<=nums; i++) {//复制库里的mc,并将其置于舞台上,分配好各自的坐标
        _root.attachMovie("bg_loader", "loader"+i+"_mc", 100+i);
        _root["loader"+i+"_mc"]._x = (i%5 == 0) ? 450 : (10*(i%5)+100*(i%5-1));
        ty=i%5 == 0 ? (Math.floor(i/5-1)*80) : (Math.floor(i/5)*80);
        _root["loader"+i+"_mc"]._y = 10+ty
    }
    myCL.addListener(myObj);//设置监听
    myCL.loadClip("imgs/small01.jpg", _root.loader1_mc.loadpic_mc);//加载第一副图片
}
function loadpic(id) {
    //取得xml文件里相应的图片地址
    imgurl = myList[id-1].attributes.path;
    myCL.loadClip(imgurl, _root["loader"+id+"_mc"].loadpic_mc);
}

Flash AS教程

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058