Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Создание нового фрейма на основе первого


Автор: JAYBE 11.4.2012, 16:23
Добрый день!
Я очень новичок во Flash и AS.
Подскажите правльный вариант решени задачи и насколько оптимально это и звашего опыта.
Такакя задача...
Нужен тест: 3 вопроса, при выборе правильного вопроса появляется кнопка Далее и повялются слдеюущие 3 вопроса.
Если ответ неверный: показывается окно с текстом, где содержится ответ на вопрос.

Сделал черех xml.
Код

hit.visible = false
var myXML:XML = new XML();
var XML_URL:String = "questions.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL); 
hit.visible = false
 myLoader.addEventListener("complete", xmlLoaded); 
 var correct:int
function xmlLoaded(event:Event):void 

var xml:XML = XML(myLoader.data); 
for (var k:int=0;k<xml.question.length(); k++){
    quiz_1.text = xml.question[k].answer[0]
    quiz_2.text = xml.question[k].answer[1]
    quiz_3.text = xml.question[k].answer[2]
    hit.text = xml.question[k].hint
    correct  = xml.question[k].correct
    hit.visible = false
}
this.stop();
}

function selQuiz(event:MouseEvent):void
{
    if (event.target.name == "quiz_" + correct.toString()) {
        quiz_1.text = "Верно!!"
        hit.visible = true
    } else {
        nextFrame();
    }
    trace(event.target.name)
    
}

addEventListener(MouseEvent.CLICK, selQuiz);

Так вот это находится на 1-м фрэйме. Но как сделать чтобы при выобое верного ответа было следующее:
все элементы копируются с 1-ого фрэйма на 2-ой и считываюстя по новому вопросы
Код

for (var k:int=1;k<xml.question.length(); k++){
    quiz_1.text = xml.question[k].answer[0]
    quiz_2.text = xml.question[k].answer[1]
    quiz_3.text = xml.question[k].answer[2]
    hit.text = xml.question[k].hint
    correct  = xml.question[k].correct
    hit.visible = false
this.stop();
}

Насколько это правильно? Как сделать?

Автор: Simplifier 11.4.2012, 21:27
Код не очень, канеш. И пока явно не рабочий.
Не надо тебе переходить по фреймам. Добавь переменную questionNumber:uint, которая будет хранить номер текущего вопроса. И не надо сразу перебирать все вопросы. При переходе к следующему вопросу увеличивай этот счетчик и считывай данные именно для нового вопроса. Ну и сбрасывай старые настройки, если требуется.
Код

private function goToNextQuestion():void {
    readQuestionData(++questionNumber);
}

private function readQuestionData(questionNumber:uint):void {
    quiz_1.text = xml.question[questionNumber].answer[0];
    quiz_2.text = xml.question[questionNumber].answer[1];
    quiz_3.text = xml.question[questionNumber].answer[2];
    hit.text = xml.question[questionNumber].hint;
    correct  = xml.question[questionNumber].correct;
    ...
}

Вообще кажется, что тебе лучше с чего-нибудь попроще начать разбираться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)