作者sextitanic (阿信163)
看板Flash
标题Re: [问题] 可以解释一下这个AS吗? 感谢
时间Sun Nov 22 12:35:35 2009
※ 引述《godsing (执着是苦)》之铭言:
: var baseurl = _url.substr(0,_url.lastIndexOf("/")+1);
用 _url 指令抓目前 swf 所在路径
如果放在 C 槽的话就是 file:///C|/bleachfadeloadedimages.swf
再用 substr 从所在路径的第一个字元开始搜寻,抓到最後一个符合「/」後面的字元+1
然後存到 baseurl 这个变数里,这个变数就会存:file:///C|/
: var dir = baseurl + "bleachfadeloadedimages";
dir 这个变数就更简单啦,把 baseurl 跟它自己在外面取的资料夹名合在一起
: var images = ["city","light","cars"];
这个的话就是它那个资料夹里面照片的名称,它用阵列存起来的
: playFade = function(){
: this.gotoAndStop(this._currentframe + this.speed);
: }
playFade 是一个 function
这边指的 this,是它放在场景上的一个影片片段元件
不过由於里面只放了一个空的影片片段元件,所以画面上只能看到一个点
该影片片段名产在场景上是叫 fading_symbol
所以那个 gotoAndStop 就是指 fading_symbol 从现在所在的影格开始播
每次播变数 speed 里面所给的值的影格数
下面会用 onEnterFrame 来执行它,不过却不会判断什麽时候终止
这是一点小缺憾(不终止它就会一直不断的执行,就会影响到效能)
: loadFade = function(){
: var lod = this.fader.contents.getBytesLoaded();
: var tot = this.fader.contents.getBytesTotal();
: if (lod && tot && lod == tot){
: this.speed = -1;
: this.onEnterFrame = playFade;
: }
: }
loadFade 也是一个 function
在主场景上有一个 fading_symbol 影片片段,
fading_symbol 影片片段里有一个 fader影片片段
fader 影片片段里面有一个 contents 影片片段
contents 影片片段的功能就是放load进来的照片
在这边的 this 指的是 fading_symbol 这个影片片段,至於为什麽,下面会再讲
所以先用一个 lod 变数去找现在读了多少,再用一个 tot 来存要读的照片总共大小
再用 if 判断 lod 跟 tot 的值是不是一样,一样就代表读完了
(ps:应该只要 lod == tot 即可)
this.speed 是指把 -1 这个值存在 fading_symbol 的 speed 变数里
(虽然他没宣告,可是 AS2 允许不宣告变数就直接使用)
最後 onEnterFrame 会不断的执行playFade(上面所提到的那个 function)
由於 speed 是 -1,所以代表它 gotoAndStop 会不断的往前一格播
: pressForNext = function(){
: this.speed = 1;
: delete this.onPress;
: }
pressForNext 是一个 function(这个开头是在赚稿费的吗 - -)
会把 fading_symbol 里的 speed 变数值改为 1
这样子 playFade 这个 function 就会不断的把它往前播一格
再用 delete 把这个 onPress 给停止掉,这样子在fadeOut的中途别人就不能按罗
: fading_symbol.onFadeOut = function(){
: this.speed = 0;
: this.fader.contents.loadMovie(dir + "/" + images[0] + ".jpg");
: images.push(images.shift());
: this.onEnterFrame = loadFade;
: }
在 fading_symbol 这个影片片段最後一格,有呼叫 onFadeOut这个 function
所以这边才是用该影片片段名称+function名称
若这边不加 function 名称,则该影片片段里面就要用 _parent.onFadeOut 来呼叫
离题了,转回来
由於此 function 是在 fading_symbol 建立(虽然写在主场景,但前面有元件名称)
所以里面的 this 统统都是指主场景上的 fading_symbol 影片片段
尔後由它所呼叫的 function,也都是继承它,所以之前提到的 this 才是指 fading_symbol
所以就去 load 照片,而照片的路径就是之前用变数抓的路径 dir
再加上上面 images 阵列最前面的那个内容
然後再用 images.shift() 把阵列最前面的内容删掉,再用 push 指令把它加到最後面
所以第一次点,images[0]里面的 city 会被删掉
其它往前递补,再把 city 给 push 到 images[2]
然後再用 onEnterFrame 不断的执行 loadFade
(可是这个不断执行,playFade也不断执行,这样不会有问题吗?)
嗯,一个元件一次只能用一个 onEnterFrame,所以後来再用一个,前面的就会自动取消
: fading_symbol.onFadeIn = function(){
: this.speed = 0;
: this.onPress = pressForNext;
: }
: fading_symbol.gotoAndStop(fading_symbol._totalframes); // straight to
: onFade
这个则是在 fading_symbol 的第一格影片中呼叫的
然後它会让 fading_symbol 这个点了之後会叫 pressFonNext 这个 function
上面那个 function 点了之後就会用 delete 把这个监听给取消
等下次元件 fadeIn 到第 1 格之後
再呼叫此 function 让程式去监听 fading_symbol 有没有被按下
那个 fading_symbol.gotoAndStop(fading_symbol._totalframes);
则是让 fading_symbol 这个元件先跳到最後一格,做出 fadeIn 的效果
咦?那fadein 的效果是怎麽做的呢?程式中看不到~
很简单,你点开 fading_symbol 这个影片片段,就会看到有一段渐变
再点一下 fading_symbol 里面的 fader 影片片段,按属性面板
就会看到有一个颜色旁边的下拉方块是进阶,它就是在里面设定 RGB 渐变
这样子就会有效果出现了
: 以上是在神魂颠倒论坛看到的
: 主题:[FLA]秀图的方法之一
: 本文章来自於神魂颠倒论坛 http://bbs.flash2u.com.tw/dispbbs_37_84729_1_17.html
: 我不解
: 1.为啥它按一下就会换图?
因为有 onPress 指令可以侦测该元件有没有被按到,再执行相关程式
: 2.为啥它在读图档的资料库要写这麽多步骤?
它没读资料库,只是单纯用阵列来控制
为什麽这麽多步骤?因为要指定什麽时候 fadeIn,什麽时候 fadeOut
什麽时候读哪一张照片之类
: 3.图档可以缩放吗?(以像素)
缩放可以,只要在load完照片之後,改变 load 它的影片片段大小即可
我不确定你的像素是什麽意思
: 4.speed是什麽指令?
不是指令,只是它设定在fading_symbol影片片段中的一个没宣告的变数
: 感谢解惑!
感谢让我写文章赚P币
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.174.46
1F:→ sextitanic:如果只是想使用这个程式的话,只要注意第2、3行程式 11/22 12:45
2F:推 aquarianboy:热心推一个 11/22 12:49
3F:→ aquarianboy:希望这个不是拿去交作业,不然就是帮(害)到原po了...:) 11/22 12:50
4F:→ sextitanic:现在害一个,以後就少一个竞争对手!?(误) 11/22 12:53
5F:推 godsing:不是作业 = = 现在在服替代役,没事情做..... 11/22 13:09
6F:→ sextitanic:我刚退伍,待业中,也是没事做,唉 :( 11/22 13:26
7F:→ aquarianboy:如果没事情做的话,建议找EAS3来慢慢翻,建立基础吧 11/22 21:41