Preloading in Flash
这两天有事情,所以现在给你说说preloading的事情。
其实这个一点都不难,网上你给我看的那个自己搞得很复杂。
你不熟悉flash,我先说它。
flash 做的动画什么的,有个播放顺序,很简单,就是从头到尾,一桢一桢,到了结束又重新返回第一桢,接着一桢一桢,到了结束又重新返回第一桢,而且特别请注意: 到了哪一桢,如果该桢写着什么代码,就会执行这段代码,切记切记…… 在flash的编辑界面里面,时间轴(希望你知道这个)上有个红色的小块,它到哪一桢就是播放到那一桢了,flash里面它叫播放头。这个播放头是可以控 制的,通过ActionScript中相关的命令。用代码来控制,可就不是“一桢一桢,到了结束又重新返回第一桢”了,你可以随意控制:比如,播放头到了 第五桢,你觉得第六桢不该播放,在第五桢上加个代码”gotoAndPlay(7);”,它就直接播放到第七桢,第六桢可以略过去了。你别说我罗索阿,很 多人问我关于flash的问题就是因为flash的这个基本特征还不清楚。
附件ctshx.fla里面的时间轴上,“图层一”,你先看一眼,有四个小”a”,他们的意思是:这一桢有代码,就是“ActionScript”的第一个字母。
给你说说,每个a都是干吗的。
要看到每个a都写着什么,点a在的那一桢,然后右键,选择“动作”如果你的是英文版选择“Action”之类的。那个ActionScript编辑器就会出来,你就可以看了。
第一桢上的小a: (关于桢数,播放头在不同的地方时间轴下面有个数字在不停的变,它就是桢数)
_root.bar._xscale=0;
这 句话是说:路径为 _root.bar这个东西的 x轴方向的缩放比例(x轴:你没忘初中代数有一部分讲数轴吧,还有y轴呢)设定为0。 这个x轴方向说白了就是横着的方向,y轴属性就是竖着的方向。让x轴方向的缩放比例为0,是因为从下一桢开始,名字叫“bar”的这个电影剪辑 (movieclip)就根据已经下载的数据不断的变化缩放比例,你已经猜到了,就是你看见的“进度条”。 root你知道吧?就是根,根文件夹什么的。_root.bar,就是根那一级里面叫做 bar的电影剪辑(movieclip)。
说 说 电影剪辑(movieclip),flash里面它是动画的组成单位,什么东西都可以是一个电影剪辑(movieclip),建立一个电影剪辑 (movieclip)有三个个方法:1,选定编辑窗口里的一个东西,右键,“转换为元件”(抱歉,我的是中文版,不知道英文版叫什么,反正在菜单的下面 部分)2,选定就按F8键,3,插入〉新建元件 或者快捷键 cTRL+F8. 电影剪辑(movieclip)极为重要,FLASH就靠它了。电影剪辑(movieclip)建好后就在库里面(cTRL+L可以调出库的面板),你可 以点住从库里面把拖到外面,就可以用了。出来后它可以有名字。ctshx.fla里面有一个叫bar。 如果你会用dw,会知道她的名字在哪里可以改,那里可以看见名子。但是ctshx.fla里面好几个东西摞在一起,你要找一会,反正就在那个位置。还有个 问题,电影剪辑(movieclip) 出来后在外面(特点是选定他时,有一个蓝色的框),你还可以编辑他,双击。有的时候发现编辑界面怎么不对劲,其实是不小心双击了某个电影剪辑 (movieclip),退出去这个电影剪辑(movieclip)编辑状态你才能干别的事情。怎么退出,编辑界面能看见这方面的一个导航条,注意一下。
第二桢上的小a:
a=getBytesLoaded();
b=getBytesTotal();
percent=int(a/b*100);
第 一句:getBytesLoaded()意思是:获得已经载入(get,Loaded)的字节数(Bytes)。把这个字节数赋值给a。这个字节数就是: ctshx.fla输出成.swf后ctshx.swf它的K数,随着下在时间的不同,已经下载的字节数会不同。在网页上下载的就是它 ctshx.swf,不是ctshx.fla。(输出默认的名字会是ctshx.swf,因为这个文件就叫ctshx,输出的命令是:shift+ F12,输出之前还可以作某些设定,快捷键是CTRL+shift+F12)
第二句:你肯定明白了,就是ctshx.swf一共的K数。把这个字节数赋值给b。FLASH就有这个功能,不用去资源管理器看她(ctshx.swf)的属性,哦,12K,然后再回来写:共12K,已经下载***K.
第 三句:a/b就是已经下载的百分比,好了,你猜到可以把这个百分比用到_root.bar._xscale,进度条就可以变化了。且慢,_xscale 这个属性的值在本例当中的范围是0-100的整数(可以超过100,那就是放大了)。a/b=0.**, 所以要(*100)乘以100,让小数变成**.**。还不行,小数点后面还有数字,于是用函数int()求整,就成了1,2,3,…100的整数 了,然后把这整数赋值给percent,就可以让_root.bar._xscale用了。
第七桢上的小a:
if (a>=b) {
gotoAndPlay(8);
} else {
gotoAndPlay(2);
}
_root.bar._xscale=percent;
_root.p=percent+”%”;
_root.al=int(getBytesLoaded()/1000)+”k / “+int(getBytesTotal()/1000)+”k”;
看着挺多,其实意思简单,先说:
if (a>=b) {
gotoAndPlay(8);
} else {
gotoAndPlay(2);
}
这是个条件语句。
这是判断。if (如果)
如果 a>=b,就是说已经下载的a不小于b大,也就已经下载完毕,那么播放头就到第八桢去gotoAndPlay(8);,至于到第八桢干吗去,就看你有什么需要了。
else (否则)
就是说,a
再说,
_root.bar._xscale=percent;
_root.p=percent+”%”;
_root.al=int(getBytesLoaded()/1000)+”k / “+int(getBytesTotal()/1000)+”k”;
第 一句你明白:把percent的值(整数的,在第二桢上算出来的) 赋值给_root.bar._xscale 。bar从短到长的变化,就是你看见的进度条。额外问题:flash中,电影剪辑(movieclip)变大变小的默认基点是它的中心:如果为正方形,就 是两条对角线的交点,圆形,椭圆形等等;所以,你得把这个基点挪到长方形(本例中就是长方形)的左边线上,一点都不能差,只有这样,它的变化才是左边不 动,而右边长大,不然按照默认基点的位置,它会向两边长大,切记。
第二句:percent+”%(百分号–注)”是在计算字符串,让percent的值(比如是80) 和 百分号 放在一起,看起来就是 80%(“百分号”–注),这个就是你看见不停跳动的数字:1-100 。光有这个数字还不行,得找到一个地方在屏幕上显示出来。
于是,_root.p 这个位置在根里面 名字叫p的动态文本框就应需要产生了。你在编辑界面看见的虚线方框有一个就是它(_root.p),进度条(_root.bar;)下面那个。如果你会 dw,在flash观察它没问题,属性观察器里面就能找到他,当然选定动态文本框_root.p 的时候。
第三句:可有可无,它的意思相信你能明白了。
额外话题:在时间轴 的桢的上面,你会看见有的是黑点(本桢有内容,比如一张图片),有的是灰色(本桢跟前面的黑点显示内容一样,叫做静止桢),有的是蓝色背景带箭头(位置变 化的动画,motion),绿色背景带箭头(形状变化的动画,shape),但是,要是有虚线,那是你做的动画(位置变化的,形状变化的)出错了。如果是 空白的,也没有竖线(竖线就像在新建一个flash文档的时候),意思是本桢什么也没有,就是空白桢。
第八桢:
stop();
这是说,我让播放头到这里永远不要动,让你相信“你是…“,呵呵。当然接下来你要做什么,都可以在第八桢实现了。
别嫌我罗索,我看见你和其他人因为这点小事搞不清楚无比痛苦过意不去,发狠我写了一大堆,希望你彻底明白preloading的这种做法,如果你因为这个入门ActionSctript,我无比高兴,我数学不行,没这方面的天分,所以早就放弃研究flash ActionSctript编程了,希望你多研究点,flash mx功能更加强筋,我还没看过。
!!!更正!!!
。。。。
第二句:你肯定明白了,就是ctshx.swf一共的字节数。把这个字节数赋值给b。FLASH就有这个功能,不用去资源管理器看她(ctshx.swf)的属性,哦,12K,然后再回来写:共12K,已经下载***K.
。。。。
不是“k数”
1024bytes=1k(是吧?)
!!!更正!!!
于 是,_root.p 这个位置在根里面 名字叫p的动态文本框就应需要产生了。你在编辑界面看见的虚线方框有一个就是它(_root.p),进度条(_root.bar;)下面那个。如果你会 dw,在flash观察它没问题,属性观察器里面就能找到他,当然选定动态文本框_root.p 的时候。
非也。_root.p 当中的p是动态文本框的变量,p是变量,不是“名字叫p的动态文本框”。当然动态文本框是可以有名字的,但是这有什么用处,我不知晓。请教。
!!更正!!!
….
第一句你明白:把percent的值(整数的,在第二桢上算出来的) 赋值给_root.bar._xscale 。bar从短到长的变化,就是你看见的进度条。额外问题:flash中,电影剪辑(movieclip)变大变小的默认基点是它的中心:如果为正方形,就 是两条对角线的交点,圆形,椭圆形等等;所以,你得把这个基点挪到长方形(本例中就是长方形)的左边线上,一点都不能差,只有这样,它的变化才是左边不 动,而右边长大,不然按照默认基点的位置,它会向两边长大,切记。
…..
表达有点问题,更正一下。
flash当中基点的概念:
修改基点有两个办法
1. 一个电影剪辑(movieclip)变大变小时变化的中心就是:你在编辑界面选定某个电影剪辑(movieclip)看见的那个“十”字。你可以双击这个 电影剪辑(movieclip)把(本例中)那个长方形向右挪动,一直到长方形的左边线跟“十”字中心对齐了就可以了。
2. 工具箱有个工具,在flash mx 中是右面那排上数第六个。单击该工具,再单击基点应该修改的电影剪辑(movieclip),基点就会出现。鼠标拖动它就可以修改了。
两 种方法的区别是,用第二个的时候不必改变整个电影剪辑(movieclip)在舞台(stage)中的相对位置,仅仅是基点挪了地方,而第一个方法整个电 影剪辑(movieclip)在舞台(stage)中的相对位置就会改变,因为长方形(本例中)整体向右挪地方了(假如真是这样做的,我记得做这个的时候 是用了第一个方法,蠢办法)。