Re: [問題] 有關同影片片段中 不同影格內的實體

看板Flash作者 (scars)時間10年前 (2014/06/01 09:45), 10年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《weirdfoot (ユニライト)》之銘言: : 假設舞台上有一個由影片片段A建立出的實體a : A內有4個影格 第4格上有一個影片片段 實體名稱命為mc_A4 : mc_A4也有4個影格 : 我希望mc_A4播到第4格時 實體a可以回到第一格 : 我目前的做法是 : 在現存寫在實體a上的ENTER_FRAME事件上寫 : //前面有寫讓a跳到第4格的方法(按空白鍵) : if(a.currentFrame==4 && a.mc_A4.currentFrame==4) : a.gotoAndStop(1) : 可是按下空白鍵時會輸出 : Error #1009: 無法存取 Null 物件參考的屬性或方法。 ref. http://goo.gl/G1C91Q MovieClip 從進入到離開一個 frame, 依序會發生以下事情 1.發出事件: Event.ENTER_FRAME 2.執行子物件的建構函式 3.子物件發出事件: Event.ADDED 4.子物件發出事件: Event.ADDED_TO_STAGE 5.發出事件: Event.FRAME_CONSTRUCTED 6.執行該 frame 中的影格動作指令 7.執行子物件的影格動作指令 8.發出事件: Event.EXIT_FRAME 9.發出事件: Event.RENDER 10.子物件發出事件: Event.REMOVED 11.子物件發出事件: Event.REMOVED_FROM_STAGE 在你偵聽到 a 發出 ENTER_FRAME 的時候, a 的子物件 mc_A4 還沒建構出來 因此 a.mc_A4 還是空值, 自然也找不到 a.mc_A4 的 currentFrame 屬性 所以你可以改為偵聽 FRAME_CONSTRUCTED 或是如 cleanwind 所回覆的, 在 mc_A4 的第四個影格加入指令 MovieClip(parent).gotoAndStop(1) 應該都能解決你的問題 : 推 KawasumiMai:你提到ENTER_FRAME,應該就是AS3了 05/31 13:15 : → KawasumiMai:猜測應該是你的mc_A4只出現在第四格 05/31 13:15 : → KawasumiMai:所以在a的第一格時無法抓到mc_A4的currentFrame 05/31 13:16 : → KawasumiMai:不要用&&,把它拆成兩行試試看 05/31 13:16 : → KawasumiMai:if(a.currentFrame == 4){ 05/31 13:16 : → KawasumiMai: if(a.mc_A4.currentFrame == 4){ 05/31 13:17 : → KawasumiMai:這樣一來只要a不是4在第一層就會跳過了 05/31 13:17 判斷式如果是用 && 連接 當前面的陳述為false時, 就會直接跳過後面的陳述 因此 if(p && q){ r(); } 與 if(p){ if(q){ r(); } } 是一模一樣的 相對的如果是以 || 連接 當前面的陳述為true時, 一樣會直接跳過後面的陳述 : → weirdfoot:喔喔 這樣可以抓到了 不過現在問題變成我要是寫a.mc_A4. 05/31 19:40 : → weirdfoot:play()還是會出現錯誤...是類型不對的問題嗎? 05/31 19:40 如上所述, 是事件發生順序的緣故, 不是因為類型不對 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.99.231 ※ 文章網址: http://www.ptt.cc/bbs/Flash/M.1401587128.A.352.html ※ 編輯: scars (111.243.99.231), 06/01/2014 10:01:16

06/01 18:01, , 1F
恩,當初想反了,原本是認為and必須要滿足所有條件
06/01 18:01, 1F

06/01 18:01, , 2F
所以會all check,沒想過false就跳開的問題
06/01 18:01, 2F
文章代碼(AID): #1JYeMuDI (Flash)
文章代碼(AID): #1JYeMuDI (Flash)