XML+MovieClipLoader实现多图动态载入
2007-04-05 15:20
976 查看
首先是监听的问题,这么多图,不能新建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);
}
先给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 +xml 加载图片(使用MovieClipLoader实现LOADING)
- Android动态载入JAR包的实现方法
- 使用placeholder实现动态配置persistence.xml
- [导入]用ExtJS 实现动态载入树(Load tree)
- 【Android高级】DexClassloader和PathClassloader动态加载插件的实现
- 用ExtJS 实现动态载入树(Load tree)(转载)
- spring_由XML实现AOP面向切面编程_实现动态代理
- Android_Loader_使用LoaderManager管理Loader实现异步动态加载数据
- Ext2.0 + .Net 2.0应用实例(2)--用ExtJS 实现动态载入树
- vue动态载入变量键值名,实现数据双向绑定
- asp.net ext treepanel 动态加载XML的实现方法
- 使用 XMLHttpRequest 实现 Ajax 一:取回动态页面响应
- 第37天(就业班) 静态代理与动态代理、oglib代理、手动实现aop编程、注解实现AOP编程、aop相关的几个注解、xml实现aop、切入点表达式、spring对aop模式
- ubuntu / Mint下 perl 实现动态桌面壁纸 生成xml的实用脚本
- DynamicXml -- 动态读取操作XML (一个从XML到Object的通用实现)
- 实现MyBatis Mapper XML文件增量动态刷新,自动加载,热加载,热部署
- MovieClipLoader的帮助文件
- MovieClipLoader
- 如何使用Loader来动态载入一个基于item的Component
- asp.net下xml当作导航数据源实现动态权限