看板 Flash 關於我們 聯絡資訊
※ 引述《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
sextitanic:如果只是想使用這個程式的話,只要注意第2、3行程式 11/22 12:45
aquarianboy:熱心推一個 11/22 12:49
aquarianboy:希望這個不是拿去交作業,不然就是幫(害)到原po了...:) 11/22 12:50
sextitanic:現在害一個,以後就少一個競爭對手!?(誤) 11/22 12:53
godsing:不是作業 = = 現在在服替代役,沒事情做..... 11/22 13:09
sextitanic:我剛退伍,待業中,也是沒事做,唉 :( 11/22 13:26
aquarianboy:如果沒事情做的話,建議找EAS3來慢慢翻,建立基礎吧 11/22 21:41