主题:  preloader的制作(MX 版)

s22

职务:版主
等级:4
金币:10.0
发贴:1634
#12002/5/15 16:59:36
www.unanhui.com steven

昨天看报纸,报上有关于PRELOADER的制作的文章,也许大家都不买报纸,报纸上老土的制作方法起码我不感兴趣,呵呵~
所以我用送给大家段程序做礼物。有了它就不用又看报又看屏幕的敲了。把下面的代码放到第一桢就可以了.连图都不需要画。
在这些个代码里面用到了不少重要的函数。一切用代码完成,看上去复杂,用起来简单.怕有人不明白,特地写了注释在后面.
用到了建立空MC,空文本框,用到了文本格式,画线,填充等等。。。
//FLASH MX版本专用
lx=50;//设置LOAD的X位置
ly=300;//Y位置
bcolor=0x000000;//背景颜色
fcolor=0x666666;//前景颜色
tcolor=0xffffff;//文字颜色

//============================================================画矩形的原形函数
//x,y为原点,X1,Y1为增量,C为填充颜色,XX,YY为当前MC的位置。
Movieclip.prototype.rectangle=function (x,y,x1,y1,c,xx,yy) {
this.beginFill(c,100);//c为开始设置的变量
this.moveTo(x,y);
this.lineTo(x+x1,y);
this.lineTo(x+x1,y+y1);
this.lineTo(x,y+y1);
this.lineTo(x,y);
this.endFill();//
this._x=xx;
this._y=yy;
};
//=============================================================建立两个空MC,然后画矩形
_root.createEmptyMovieClip ("m_mc", 1);
_root.m_mc.rectangle(0,0,110,11,bcolor,lx-5,ly-1.5);//让两个MC的中心在一起。
_root.createEmptyMovieClip ("my_mc", 2);
_root.my_mc.rectangle(0,0,1,8,fcolor,lx,ly);
//======================================================================================

_root.createTextField("hasloaded_txt",3,lx+45,ly-0.5,20,10);
steven_ff=new TextFormat();
steven_ff.color=tcolor;
steven_ff.size=5;
_root.hasloaded_txt.setNewTextFormat(steven_ff)
//停在第一桢
_root.stop();
//使用ONENTERFRAME动作,不停顿检测preload的情况
fileSize=_root.getBytesTotal();//文件的总大小
_root.my_mc.onEnterFrame=function () {
bytesLoaded=_root.getBytesLoaded();//已经载入字节
c=Math.round(bytesLoaded/fileSize*100);//用这个数据来控制画好的MC的大小
trace("c="+c);//测试的时候查看变化
this._width=c;//设置my_mc的宽度
_root.hasloaded_txt.text=c+"%"; //如果已经全部下载完毕,那么播放;,卸载my_mc;
if(c==100){
_root.play();
unloadMovie(_root.my_mc);
unloadMovie(_root.m_mc);
unloadMovie(_root.hasloaded_txt);//文本也能下掉。。。
}
}



没用上FLASH MX的也别急,这里有一小段适合FLASH5呵呵~不过要用手画个宽1个象素的MC。把这段代码加在MC上就可以了。如果需要
显示白分比,就在场景中建立一个名为hasloaded的动态文本框就可以了。
//适合FLASH5 FLASH MX版本
onClipEvent(load){
_root.stop();
}
onClipEvent(enterFrame){
aload=_root.getBytesTotal();
bload=_root.getBytesLoaded();
c=bload/aload*100;
trace("c="+c);
this._width=c;
_root.hasloaded_txt.text=c+"%";
if(c==100){
_root.gotoAndPlay(20);
}
}

PS;关于多SWF加载的LOADER过几天写出来。


[upload=bmp]uploadFiles/2002-05/1516593120070.bmp[/upload]

编辑历史:[这消息被janlay编辑过(编辑时间2002-05-24 00:02:24)]


Mozier

职务:管理员
等级:5
金币:11.0
发贴:2994
#22002/5/21 21:05:51
顶一下,希望没看到这篇文章的网友看一下~
其中涉及到用MX做loading.................(不知是转载还是原创)

另外请29791555也理解一下斑竹的难处。。。



s22

职务:版主
等级:4
金币:10.0
发贴:1634
#32002/5/23 16:22:19
我不喜欢抄袭。
我现在都没的兴趣写下去了。呵呵~



手工感情

职务:普通成员
等级:3
金币:10.0
发贴:556
#42002/5/23 16:39:41
如果得不到别人的认同的确是很让人扫兴的事情。我也有写过教程。但是初学者一看到这么长的代码就会头疼,即使你在后面写了注释(这是一个好习惯)。
在写之前先整理一下思路,比方说写教程的目的是什么,让初学者收益,还是拿出来和大家一起探讨,还是为了锻炼自己的文档能力?
技术文章对code以外的要求也很高。在txt部分描述问题的出现,问题的解决方法和解决思路,对所使用的比较关键的函数做一下说明无疑能够加强别人对文章的理解。


黑色的风略过我的翅膀,我却无法落下来梳理你的羽毛
————————————————
◆5d.cn互动论坛◆
------|xml版主|------

Mozier

职务:管理员
等级:5
金币:11.0
发贴:2994
#52002/5/23 19:35:32
29791555在上个帖子中说
引用:
我不喜欢抄袭。
我现在都没的兴趣写下去了。呵呵~

真心希望你继续写下去,使广大闪迷的技术及时得到更新。。。



番茄蛋汤

职务:普通成员
等级:3
金币:10.0
发贴:807
#62002/5/23 22:27:48
我 支持你 ,继续写吧,



Me

职务:普通成员
等级:2
金币:10.0
发贴:320
#72002/5/23 23:12:04
在把图片和思路列出来
就是一篇很的教程了
贴文章原创区,
不久也就有人找你变铅字了:)
继续吧!



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#82002/5/24 0:00:03
虽然关于loading的帖子已经很多了,但这个还是挺有新意的,毕竟是MX版的嘛 感谢29791555的工作

置顶一周,希望作者能坚持下去



wukun

职务:普通成员
等级:1
金币:1.0
发贴:222
#92002/5/26 2:00:35
好东西啊,应该不算是教材了,拿来直接就可以用的。

谢啦,大家资源共享嘛!



再見理想

职务:普通成员
等级:5
金币:10.0
发贴:2495
#102002/5/26 13:15:31
好麻烦哦

if (Number(_framesloaded)>=Number(_totalframes)) {
gotoAndPlay (X);
} else {
setProperty ("/MC名", _xscale, (_framesloaded/_totalframes)*100);
文本名 = (int ((_framesloaded / _totalframes)*100)) add "%";
}

多简单,5行就搞定,有进度条还有精确%比



手工感情

职务:普通成员
等级:3
金币:10.0
发贴:556
#112002/5/26 21:59:42
呵呵,FMX的代码自然和F5的代码不一样……


黑色的风略过我的翅膀,我却无法落下来梳理你的羽毛
————————————————
◆5d.cn互动论坛◆
------|xml版主|------

janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#122002/5/27 21:34:00
主要是有mx的特色



wukun

职务:普通成员
等级:1
金币:1.0
发贴:222
#132002/5/28 10:56:25
但是我这久一直在想MX的绘画语句有必要那么用吗?有时候是自己给自己找麻烦的。

总不可能有一天我们都不做设计,都不用手画了。然后一开始就是一个
#include ,然后就是用程序建一堆堆的MC,but,然后动画也是AS做的。想想有点恐怖的。

还是AS和传统技法结合要好。好的flash应该是技术和艺术的结合.




s22

职务:版主
等级:4
金币:10.0
发贴:1634
#142002/5/29 11:13:14
其实第一段的AS只是用来熟悉,很多地方都不是很成熟。所以我在结尾的部分给出了5的写法。另外其实PRELOADER在应用中,我写的应该是最简单了了。。



yangguolang

职务:普通成员
等级:1
金币:0.0
发贴:111
#152002/5/29 17:24:07
我试过了。。只是输出个c=100别的什么都没有。。