2012-01-20 58 views
0

新手Flash開發。我在舞臺上將現有MC的名稱傳遞給一個新變量,然後補間它,我有點麻煩。我試過了我能找到的所有東西。 這裏是設置:AS3使用currentLabel引用已命名的MC

3個難度等級的問題:簡單,中等,困難。每個問題都是圖書館中的一個單獨的MC。 每個問題有兩個文本字符串:一個正常和一個更改。 container_MC包含所有的問題。
在container_MC中,每個框架都包含一個問題MC以及稱爲高亮的第二個MC。 然後將這些框架中的每一個標記爲問題難題和問題編號即easyQuestion1。突出顯示是一個包含圍繞該更改的框的MC。它與框架+「突出顯示」相同,即easyQuestion1Highlight。 每個高亮框都有Alpha = 0。 每個框架還包含決定正確答案和問題難度的變量。 使用addChild動態添加了舞臺上的任何對象(請注意我的介紹的新手部分:D)。

在我的maintimeline中,我有一個container_MC的實例。如果玩家選擇了正確的答案,當前幀將突出顯示從Alpha = 0到Alpha = 1的方框變化。 我想要做的是將frameLabel作爲MC名稱的一部分。這是一些要檢查的代碼。

import com.greensock.* 

container_MC.addEventListener(Event.ENTER_FRAME,continueQuestions); 

function continueQuestions(evt:Event){ 
    evt.target.removeEventListener(Event.ENTER_FRAME,continueQuestions); 
} 

var myVar:String=(container_MC.currentLabel);//Trace returns easyQuestion1. 
var myVar2:String=(myVar+"Highlight");//Trace returns easyQuestion1Highlight. 
var highlightVar:MovieClip= MovieClip(container_MC.myVar2);//Trace returns null. 

nextQuestion_btn.addEventListener(evt:MouseEvent.CLICK, nextQuestion); 

function rightAnswer(e:Event):void{ 
    tweenMax.to(highlightVar, 1, {autoAlpha:1}); 
} 

function nextQuestion(e:Event):void{ 
    tweenMax.to(highlightVar, .25, {autoAlpha:0}); 
    container_MC.nextFrame(); 
} 

在實際的代碼,nextQuestion擁有一批//如果其他條件語句,如果控制,玩家進入的。不過就我們的目的而言,它只需要使用下一幀的高亮框。

回答

1

優秀的問題!你需要做的就是改變這一行:

var highlightVar:MovieClip= MovieClip(container_MC.myVar2); 

...此相反:

var highlightVar:MovieClip= MovieClip(container_MC.getChildByName(myVar2)); 

這是因爲表達「container_MC.myVar2」是指「在容器中查找一個myVar2財產「,因此」myVar2「get用作字面字符串而不是變量引用。希望這可以幫助!

+0

完美!那正是我需要的。你先生是個學者和紳士! – ersellix

+0

謝謝!如果解決了這個問題,Plz會將其標記爲答案。 :) –