2015-11-13 47 views
1

我在嵌套實例中使用ENTER_FRAME事件觸發頂級實例(場景1)中的gotoAndPlay()時遇到問題。在較高級別上啓動影片剪輯。或變量的問題?

在主時間軸上,我有兩個動畫片段:neuron1_mcfiber_mc

在第2幀的fiber_mc我有一個名爲「flex」的幀標籤。在neuron1_mc內部有一個名爲elec_mc的實例。

elec_mc的最後一幀 - 在操作層,我有以下代碼:

addEventListener(Event.ENTER_FRAME, muscleTwitch); 
function muscleTwitch(event:Event): void 
{ 
    fiber_mc.gotoAndPlay("flex"); 
    removeEventListener(Event.ENTER_FRAME, muscleTwitch); 
} 

我這個用於不同的事情幾次在過去的幾天裏,它工作正常,但每次使用它時,它都會在該時間軸內播放一個實例。現在我試圖讓框架事件觸發幾個級別 - 所以Flash不知道在哪裏(或什麼)「彎曲」是因爲我沒有告訴它在哪裏fiber_mc是。

正如你所說我很缺乏經驗。我明白我想要的東西比我的技能準確得多。

對這種特殊情況的任何幫助都很棒,而且對這種情況的一般建議也會很好。

謝謝!

+0

您沒有使用正確enterFrame事件。輸入框僅用於一個目的:多次運行相同的代碼(至少兩次)。如果情況並非如此,並且您的代碼只需要運行一次,則不應使用定義框架。在你的情況下,你的代碼可以恢復到這個簡單的行:fib_mc.gotoAndPlay(「flex」); – BotMaster

+0

因此,從'elec_mc'中的代碼看來,訪問'fiber_mc'需要執行以下操作:'parent.parent.fiber_mc'或者,您可以執行'root.fiber_mc'。你不能簡單地訪問'fiber_mc',因爲它不在同一個範圍內。此外,這是真的,除非你故意等待一幀,否則輸入幀處理程序沒有多大意義。 – BadFeelingAboutThis

回答

0

你的問題是一個範圍問題(你似乎已經猜到了)。

elec_mc的範圍內沒有fiber_mc項目,所以您可能會收到關於空對象引用的#1009錯誤。

從你顯示的內容看來,您需要執行以下任一操作才能獲得對fiber_mc的引用。

  1. 爬上親子關係,直到你得到fiber_mc & elec_mc兩個對象的共同父。

    //the first parent is neuron1_mc, and it's parent is the main timeline, to which fiber_mc is a child 
    parent.parent.fiber_mc.gotoAndPlay("flex"); 
    
    //though to avoid a compiler warning you may need to cast the parents: 
    MovieClip(MovieClip(parent).parent).fiber_mc.gotoAndPlay("flex"); 
    
    //casting is just telling the compiler explicitly what kind of object something is 
    
  2. 使用root關鍵字,其是將主時間軸的引用。

    MovieClip(root).fiber_mc.gotoAndPlay("flex"); 
    
+0

...另外,正如@BotMaster所提到的,在這裏你不需要'ENTER_FRAME'事件監聽器,你可以使用:'MovieClip(root).fiber_mc.gotoAndPlay('flex');'... – akmozo

+0

@akmozo - 我已經對此發表了評論,因爲它與手邊的問題無關,我不覺得有必要在答案中解決它。 – BadFeelingAboutThis

+0

由於OP顯然是初學者,因此任何建議總是受歡迎的,對於任何人來說也是如此需要您的答案,並且誰通常不在意/有時間閱讀評論,所以最好(我認爲)在答案中。 – akmozo