返回   webstudio Forums > FLASH > Flash8 and Flash MX 2004

发表新主题 回复
 
主题工具 显示模式
旧 2007-10-03, 12:17 AM   #1
Mirage
高级会员
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
Mirage 的头像
 
注册日期: 07-09
帖子: 169
现金:406金币
资产:406金币
Mirage 向着好的方向发展
默认 【原创】创点东东 XML+MovieClipLoader

今天做东西的时候,自我感觉这段程序编的良好,所以发上分享下,适合菜鸟。。。。。
这是一个逐个加载图片的程序,要是你直接用一个FOR循环全部直接加载的话,不但影响网速而且还耗系统资源,这里我用MovieClipLoader的onLoadComplete来加载下一个图像,由于图像的URL地址是存在一个XML文件里。所以先当xml.onLoad触发的时候复制一个MC,而这个MC的时间线上就是MovieClipLoader类,而onLoadComplete触发时又让父级复制一个MC加载图像,这里的用到了函数递归,变量的作用域,这是新手最容易忽略的问题。


在MC上的程序:
var str:String;//开始声明的这两个变量我觉得是这个小程序最精华的部分了,它的属值需要上一级影片来传递,也就是xml的节点的属性值和当图片加载完后继续复制这个影片
var fun:Function;
var loadPic:Object = new Object();
var loadpic:MovieClipLoader = new MovieClipLoader();
loadPic.onLoadStart = function(target_mc:MovieClip) {
motionLoad_mc._visible = true;
target_mc._alpha = 0;
};
loadPic.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
motionLoad_mc.per_txt.text = "Loading Pictrue..."+Math.round(loadedBytes/totalBytes*100)+"%";
};

loadPic.onLoadComplete = function(target_mc:MovieClip) {
atween = new mx.transitions.Tween(target_mc, "_alpha", mx.transitions.easing.Back.easeOut, 0, 100, 2,

true);
fun();//调用函数
motionLoad_mc._visible = false;
};
loadpic.addListener(loadPic);
motionLoad_mc._visible = false;
loadpic.loadClip(str,load_pic_mc);


主时间轴上的脚本:


////////////---头像----------
System.useCodepage = true;
attachPic_mc.setMask(maskPic_mc);
var portraitXml:XML = new XML();
portraitXml.ignoreWhite = true;
portraitXml.load("portrait.xml");
var port:Array;//变量之所以在这里声明是因为作用在这整个关键桢上
var i:Number = 0;
portraitXml.onLoad = function(success) {
if (success) {
port = portraitXml.firstChild.childNodes;//给变量属值
var loadP:MovieClip = attachPic_mc.attachMovie("loadPic_mc", "loadPic_mc"+i, i, {_x:i*150});
loadP.str = port[i].attributes.path;//str是一个在loadPic_mc的主时间线上的变量类型为字符串
loadP.fun = loadPor;//fun也是一个在loadPic_mc的主时间线上的变量类型为函数
}
};
function loadPor() {//定义了函数loadPor()其作用就是复制loadPic_mc
if (i>port.length-1) {
return;//我觉得这个判断很重要,主要就是中断函数,看了下面的语句就知道,当loadPic_mc时间线上的事件onLoadComplete触发时都会调用这个函数,在函数的递归里一定要有个中断,否则一直会循环下去
} else {
i++;
trace(i);
var loadP:MovieClip = attachPic_mc.attachMovie("loadPic_mc", "loadPic_mc"+i, i, {_x:i*150});
loadP.str = port[i].attributes.path;//port这个变量的作用域是这个影片的这个时间轴,所以这里能读的到 而不是undefine了
loadP.fun = loadPor;//这里又会调用这个函数loadPor()
}
}
//////-----------------------
var m = 0;
left_btn.onRelease = function() {
if (m<port.length-1) {
m++;
xtween = new mx.transitions.Tween(attachPic_mc, "_x", mx.transitions.easing.Back.easeOut,

attachPic_mc._x, 0-m*150, 1, true);
} else {
return;//一样要中断否则那个attachPic_mc乱跑了,但是这里不加这个else只加if的话也是可以的,但为什么这样做可能是我的一个习惯吧,良好不良好我也不知道了
}
};
right_btn.onRelease = function() {
if (m>0) {
m--;
xtween = new mx.transitions.Tween(attachPic_mc, "_x", mx.transitions.easing.Back.easeOut,

attachPic_mc._x, 0-m*150, 1, true);//这里用tween类的时候也许你可以把最后结束的位置0-m*150改成attachPic_mc._x-150,但是当鼠标点快的时候它每次移动的距离不一定是150了所以这里用了m这个变量来监督,也许会疑问为什么非得加个0啊,不直接写成-m*150啊,那个0就是attachPic_mc._x的初始位置,这就设计到了一个程序的扩展性了,要是我在开始就定义一个变量start=attachPic_mc._x,这里直接用start-m*150那么扩展性远比我现在的这个好!
} else {
return;
}
};
上传的附件
文件类型: rar book.rar (28.8 KB, 286 次查看)
Mirage 当前离线  
回复时引用此帖
旧 2007-10-03, 02:37 AM   #2
egoldy
沙漠孤鹰
级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时级别:22 | 在线时长:617小时 | 升级还需:4小时
 
egoldy 的头像
 
注册日期: 04-07
住址: 北京
帖子: 2835
精华:4
现金:2411金币
资产:1668861金币
声望: 650
egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀egoldy 有着人尽皆知的贡献和荣耀
发送 MSN 消息给 egoldy 发送 QQ 消息给 egoldy
默认 回复: 【原创】创点东东 XML+MovieClipLoader

顶一下,呵呵,看来十一期间,只剩下咱们俩了.

http://www.webstudio.com.cn/wssign/egoldyfoot.jpg
egoldy 当前离线  
回复时引用此帖
旧 2007-10-03, 09:24 PM   #3
Mirage
高级会员
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
Mirage 的头像
 
注册日期: 07-09
帖子: 169
现金:406金币
资产:406金币
声望: 10
Mirage 向着好的方向发展
默认 回复: 【原创】创点东东 XML+MovieClipLoader

大家都走光了,难得的节假日啊 ^_+ 可惜我俩出不去了 :-)
egoldy 你AS3.0学得怎么样啊?学好了希望出本书啊,我实在懒得看帮助文档啊 觉得那样系统的学的话这一生的时间都不够 这些东西感觉学会20%就能在80%的场合里用得上
Mirage 当前离线  
回复时引用此帖
旧 2007-10-05, 04:25 PM   #4
boyzone
高级会员
级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时级别:3 | 在线时长:25小时 | 升级还需:7小时
 
注册日期: 07-05
帖子: 209
现金:141金币
资产:591金币
声望: 10
boyzone 向着好的方向发展
发送 QQ 消息给 boyzone
默认 回复: 【原创】创点东东 XML+MovieClipLoader

loadP.fun = loadPor;
这种方法直接换成 loadPor()直接调用函数多好理解.
boyzone 当前离线  
回复时引用此帖
旧 2007-10-10, 06:23 PM   #5
新秀
江湖新秀
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
注册日期: 07-05
住址: 内蒙古
帖子: 104
现金:132金币
资产:265金币
声望: 10
新秀 向着好的方向发展
发送 QQ 消息给 新秀
默认 回复: 【原创】创点东东 XML+MovieClipLoader

收藏啦!!!

我自己做的flash个人网站 www.flash-me.cn
帅哥 新秀 当前离线  
回复时引用此帖
旧 2007-10-13, 08:37 AM   #6
新秀
江湖新秀
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
注册日期: 07-05
住址: 内蒙古
帖子: 104
现金:132金币
资产:265金币
声望: 10
新秀 向着好的方向发展
发送 QQ 消息给 新秀
默认 回复: 【原创】创点东东 XML+MovieClipLoader

楼主,你好.感谢你给大家共享的文件,我下载下来研究了很长时间.学到了很多,特别是在对xml应用方面,而且根据自己的想法做了一定的修改,您帮我看一下有什么不足.
我觉得我遍的还是有点拙.肯定能在缩短一下代码.
大家也帮我看一下,谢谢!
还有就是,大家肯定都知道Fireworks,如果用它处理jpg图片能缩小好几倍,就是用优化面板里的选项,用80品质,这样大家就不必为传不上附件而烦恼了.
上传的附件
文件类型: rar book!.rar (15.4 KB, 41 次查看)
帅哥 新秀 当前离线  
回复时引用此帖
旧 2007-10-13, 09:49 AM   #7
Mirage
高级会员
级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时级别:3 | 在线时长:30小时 | 升级还需:2小时
 
Mirage 的头像
 
注册日期: 07-09
帖子: 169
现金:406金币
资产:406金币
声望: 10
Mirage 向着好的方向发展
默认 回复: 【原创】创点东东 XML+MovieClipLoader

:-)
明白了 :-) 代码我看了 只是感觉让我匪夷所思,所以我也不知道该怎么减减,呵呵,其实我觉得别人说也没用 自己使劲编吧 等编到一定的程度的后 自然会精炼 功到自然成嘛
你能把别人的代码扩展一下,值得发扬 因为别人的代码光看是没用的 看了理解理解了再修改 扩展 这是一种高效率的学习方法 我觉得
^_+ 你还改进了我的代码 加了个函数easing();^_^比我以前的代码简洁多了
图片嘛 谢谢你的提醒 以后上传时尽量做小 毕竟教程用的不需要品质太高的 ^_^谢谢
Mirage 当前离线  
回复时引用此帖
旧 2007-10-14, 08:25 PM   #8
6spc
初级会员
级别:0 | 在线时长:0小时 | 升级还需:5小时
 
注册日期: 07-10
帖子: 1
现金:2金币
资产:2金币
声望: 10
6spc 向着好的方向发展
默认 回复: 【原创】创点东东 XML+MovieClipLoader

没明白MC的动作
6spc 当前离线  
回复时引用此帖
旧 2007-10-14, 09:25 PM   #9
love黄家驹
高级会员
级别:5 | 在线时长:51小时 | 升级还需:9小时级别:5 | 在线时长:51小时 | 升级还需:9小时
 
注册日期: 06-05
住址: lbynet
帖子: 158
现金:361金币
资产:421金币
声望: 10
love黄家驹 向着好的方向发展
默认 回复: 【原创】创点东东 XML+MovieClipLoader

来看看,呵呵
帅哥 love黄家驹 当前离线  
回复时引用此帖
旧 2007-11-03, 05:26 PM   #10
蓝狐
狐 域
级别:1 | 在线时长:10小时 | 升级还需:2小时
 
注册日期: 07-01
帖子: 18
现金:42金币
资产:42金币
声望: 10
蓝狐 向着好的方向发展
发送 QQ 消息给 蓝狐
默认 回复: 【原创】创点东东 XML+MovieClipLoader

来看看,学习一下啊,好东西!
蓝狐 当前离线  
回复时引用此帖
发表新主题 回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转

所有时间均为格林尼治时间 +9。现在的时间是 01:55 AM


copyright by webstudio.com.cn. All Rights Reserved.
Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2017,Jelsoft Enterprises Ltd.
增强包 [3.4] 制作: PHP源动力   官方中文站: vBulletin 中文