Flash 板


LINE

※ 引述《sextitanic (阿信163)》之銘言: : ※ 引述《tira0419 (提拉)》之銘言: : : 恕刪一點原文 : : 我需要做一個播放與暫停鈕,能停止動畫播放,卻又在暫停的地方開始播放。 : : 我試了很久,一開始發現STOP跟PLAY只能控制最上層的時間軸,無法暫停影片片段裡的 : : 播放。所以後來又開始把第一層的每個影片片段設一個實體名稱,然後再用程式碼去暫 : : 停這些影片片段的播放。(感覺很土法煉鋼...) : : 程式碼如下:(假設10個影片片段的實體名稱是aaa bbb ccc ddd eee .........) : : on (release) { : : aaa.stop(); : : bbb.stop(); : : ccc.stop(); : : ddd.stop(); : : eee.stop(); : : fff.stop(); : : ggg.stop(); : : hhh.stop(); : : iii.stop(); : : sss.stop(); : : } : 其實如果是命名成 a1、a2、a3....a11 : 那可以寫成 : for(var i=1; i<=11; i++){ : this["a" + i].stop(); : } : : (恕再刪一點原文)我必須每個 : : 都設實體名稱,再設定相對應的程式碼。這樣搞下去程式碼就一長串比鄉民的30cm還 : : 長了... : : 然後...我總共有60個flash要改,每個都有一模一樣的情況.....= =" : : 所以來請教各位大大...有沒有程式碼可以一次控制這麼多層的影片片段 : : 設定我按下暫停鈕,這些動畫就全部暫停 : : 按下播放鈕,就從我剛剛暫停的那個畫面開始播放? : : 懇求各位大大幫忙了>"< : 如果不想要每一個都設名字的話,倒可以用另一個方法 : typeof : 嗯.....就是偵測場景上的元件是什麼類型 : 如果是 movieclip 就停止 : 大概範例如下: : for(var i in _root){ //迴圈,會跑在 _root 裡面的所有物件,指定給 i : if(typeof(this[i])=="movieclip"){ // movieclip 就是影片片段 : this[i].stop(); //先把第一層的停下來 : for(var j in this[i]){ //再來就是停 i 影片片段裡面的囉 : if(typeof(this[i][j]) == "movieclip"){ : this[i][j].stop(); : } : } : } : } : 嗯......這個應該是 ok 的,寫的還挺醜的啊 XD 寫成遞迴 就能支援到所有層級 function stopMC(MC) { MC.stop(); for(var i in MC) if(typeof(MC[i]) == "movieclip") stopMC(MC[i]); } 不過其實等到復原的時候就出包了,因為 function playMC(MC) { MC.play(); for(var i in MC) if(typeof(MC[i]) == "movieclip") playMC(MC[i]); } 當初停止全部的MC之前,也許只有少數幾個MC會動 但是復原時卻是所有MC都在動阿~~~(無解) 有辦法判斷出某個MC是否正在play嗎? ==嘗試修改推文中提到的問題 function stopMC(MC) { for(var i in MC) if(typeof(MC[i]) == "movieclip") stopMC(MC[i]); //備份資料 MC.onEnterFrameBackup = MC.onEnterFrame; MC._currentFrameBackup = MC._currentFrame; MC.onEnterFrame = function() { //判斷這MC本身會不會動 if(this._currentFrame == this._currentFrameBackup) this.stopByFunction = false; else this.stopByFunction = true; //馬上停掉 this.onEnterFrame = null; MC.stop(); } //MC.stop(); 放這裡就錯了 } function playMC(MC) { for(var i in MC) if(typeof(MC[i]) == "movieclip") playMC(MC[i]); MC.onEnterFrame = MC.onEnterFrameBackup; if(MC.stopByFunction) MC.play(); } 測試檔案:用滑鼠左鍵點到球 球就會停下或繼續跑 http://cgm.cs.ntust.edu.tw/etrex/stopPlay/stopPlay.html http://cgm.cs.ntust.edu.tw/etrex/stopPlay/stopPlay.fla 有組件也ok的版本: http://cgm.cs.ntust.edu.tw/etrex/stopPlay/stopPlay2.html http://cgm.cs.ntust.edu.tw/etrex/stopPlay/stopPlay2.fla --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.9.202
1F:推 Angelliya:給他一個stopByFunction的Boolean ? 12/10 17:30
2F:→ Angelliya:紀錄是不是因為這個function停下來的 12/10 17:31
3F:→ etrexetrex:對 問題是不知道怎樣判斷他原本有沒有在動 12/10 17:37
4F:→ Angelliya:喔喔 對耶...= = 12/10 17:45
5F:→ Angelliya:我是都抓currentFrame==1或totalFrames,不是就當在動XD 12/10 17:47
6F:→ etrexetrex:我想的是另外寫一個onEnterFrame 去看兩個時間點的 12/10 17:48
7F:→ etrexetrex:currentFrame 是否相同 不過太冗長 不想寫 12/10 17:49
8F:→ Angelliya:如果元件本身會輪播,我會在裡面下gotoAndPlay("loop") 12/10 17:49
9F:→ etrexetrex:不過話說回來這樣只能停住影格 不能停住onEnterFrame 12/10 17:49
10F:→ etrexetrex:作出的動畫 12/10 17:50
11F:→ Angelliya:避掉currentframe==1或是totalFrames的誤判 12/10 17:50
※ 編輯: etrexetrex 來自: 140.118.9.202 (12/10 18:04)
12F:推 tira0419:兩位大大的討論好熱烈啊...而且確實點出我今天早上測試 12/10 19:46
13F:→ tira0419:時所延伸出來的問題,就是停止可以同時停止,但是一播就 12/10 19:47
14F:→ tira0419:大家一起來... 12/10 19:48
15F:推 cjcat2266:我在 #172GgoE6 有提到怎麼判斷是否一個MC在播放 :) 12/10 20:39
16F:推 tira0419:有神!快拜(舉香) 12/10 20:59
17F:→ etrexetrex:發現bug !! 我改一下 0.0 12/10 21:08
※ 編輯: etrexetrex 來自: 118.168.163.148 (12/10 21:09)
18F:→ etrexetrex:使用方法: stopMC(_root); 12/10 21:16
19F:→ etrexetrex:使用方法: playMC(_root); 12/10 21:17
20F:推 sextitanic:(筆記中) 12/10 21:20
21F:推 tira0419:大大,我成功了@@,超酷的!!!真的是全部都停止,而且播 12/10 21:26
22F:→ tira0419:放的時候又不會全部一起動~該動的會動,不該動的都很乖@@ 12/10 21:27
23F:→ etrexetrex:賀 12/10 21:28
24F:推 cjcat2266:真是難得一見的 熱烈+happy ending 的討論呀 ^^ 12/10 21:29
25F:推 tira0419:剛剛還苦惱到頭有點暈,結果拿舊檔案出來改,一成功整個 12/10 21:35
26F:→ tira0419:人都清醒了起來XD 12/10 21:35
27F:→ etrexetrex:XD 我在作測試檔案 竟然遇到一個問題 12/10 21:43
28F:→ etrexetrex:畫面上有組件就會出bug 12/10 21:43
29F:→ tira0419:怪了...我這邊相當正常耶@@" 12/10 21:44
30F:→ etrexetrex:真可怕 組件只要出現在元件庫 就會掛點了 12/10 21:47
※ 編輯: etrexetrex 來自: 118.168.163.148 (12/10 21:52)
31F:→ etrexetrex:新增了測試檔案 12/10 21:53
32F:→ etrexetrex:誰要來避免一下組件的bug XDDD 12/10 21:53
33F:→ etrexetrex:對了 這個測試檔案只有一層 所以遞迴的部分測不到 12/10 21:55
34F:推 tira0419:所以是我的fla裡面根本沒有組件所以才沒事摟@.@" 12/10 21:55
35F:→ etrexetrex:嗯 12/10 21:56
36F:→ tira0419:這又更深奧了...(遠目) 12/10 22:00
37F:→ etrexetrex:如果有辦法知道某個MC是否為組件 就能除去問題 12/10 22:07
38F:推 cjcat2266:if (mc is fl.core.UIComponent) trace("component"); 12/10 22:16
39F:→ cjcat2266:這是AS3的判斷法,AS2的我記得寫法一樣 12/10 22:16
40F:→ etrexetrex:好像不能 12/10 22:20
41F:→ etrexetrex:if (mc instanceof mx.core.UIComponent) 這樣可以 12/10 22:32
※ 編輯: etrexetrex 來自: 118.168.163.148 (12/10 22:35)
42F:推 tira0419:建議版主收錄@.@" 12/11 11:45
43F:→ aquarianboy:其實是有收了 :) 12/11 11:52
44F:→ GGPlay:拜一下好文! 12/13 13:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP