AS3使用currentLabel引用已命名的MC

时间:2012-01-20 21:24:51

标签: flash actionscript-3 flash-cs5

新手Flash dev在这里。我在舞台上将现有MC的名称传递给新变量然后补间它时遇到了一些麻烦。我已经尝试了我能找到的一切。 这是设置:

3个问题难度级别:简单,中等,难度。每个问题都是图书馆中的单独MC。 每个问题都有两个文本串:一个是正常的,一个是改变的。 container_MC包含所有问题 在container_MC内,每个帧包含一个问题MC以及一个名为highlight的第二个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有一组if // else if条件控制玩家去哪里。但是出于我们的目的,它只需要使用下一帧的高亮框。

1 个答案:

答案 0 :(得分:1)

很棒的问题!你需要做的是改变这一行:

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

...改为:

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

这是因为表达“container_MC.myVar2”意味着“在容器上,查找名为myVar2的属性”,因此“myVar2”get用作文字字符串而不是变量引用。希望这有帮助!