AS3 Использование currentLabel для ссылки на уже названный MC - PullRequest
0 голосов
/ 21 января 2012

Новичок Flash Dev здесь. У меня возникли некоторые проблемы с передачей имени существующего на моем этапе MC новой переменной, а затем ее анимацией. Я перепробовал все, что мог найти. Вот установка:

3 уровня сложности вопроса: легкий, умеренный, сложный. Каждый вопрос - это отдельный MC в библиотеке. Каждый вопрос имеет две строки текста: одну нормальную и одну измененную. container_MC содержит все вопросы.
Внутри container_MC каждый кадр содержит один из MC вопроса вместе со вторым MC, называемым выделением. Каждый из этих фреймов затем помечается со сложностью вопроса и номером вопроса, то есть easyQuestion1. Основной момент - MC, содержащий коробку, которая окружает изменение. Он помечен так же, как рамка + «Подсветка», то есть easyQuestion1Highlight. Каждое из выделенных полей имеет альфа = 0. Каждый кадр также содержит переменные, которые определяют правильный ответ и сложность вопроса. Ни один из объектов на сцене не был добавлен динамически с помощью addChild (обратите внимание на новичок в моем вступлении: D).

На моей основной временной линии у меня есть один экземпляр container_MC. Если игрок выберет правильный ответ, поле выделения текущих кадров изменится с Альфа = 0 на Альфа = 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 Ответ

1 голос
/ 21 января 2012

Отличный вопрос!Что вам нужно сделать, это изменить эту строку:

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

... вместо этого:

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

Это потому, что выражение «container_MC.myVar2» означает «на контейнере, посмотритедля свойства с именем myVar2 ", следовательно," myVar2 "get используется как буквенная строка, а не как ссылка на переменную.Надеюсь, это поможет!

...