...
Примечание
Функция split берет строчку и разбивает ее на фрагменты, которые помещаются в массив. Единственный параметр, который используется в этой функции, – это символ, необходимый для разделения фрагментов. В предыдущем примере как двоеточие, так и точка с запятой применялись для разбиения строчки и помещения элементов в массив.
function initGame() {
// Устанавливаем значения переменных.
questionName = 0;
numRight = 0;
// Выводим первый вопрос.
displayQuestion();
}
Функция displayQuestionопределяет, закончена ли игра или нет, и в случае положительного ответа отображает окончательное количество набранных очков и переходит к кадру «game over». В противном случае она берет вопрос и каждый ответ и помещает их в текстовые поля внутри соответствующих клипов. Номер правильного ответа присваивается переменной correctAnswer.
function displayQuestion() {
// Проверяем, все ли вопросы уже заданы.
if (questionNum >= qArray.length) {
// Отображаем окончательное число очков и завершаем игру.
finalScore = numRight + "out of" + qArray.length;
gotoAndPlay("game over");
} else {
// Отображаем вопрос и ответы на экране.
question.text = qArray[questionNum][0];
answer0.text = qArray[questionNum][1][0];
answer1.text = qArray[questionNum][1][1];
answer2.text = qArray[questionNum][1][2];
answer3.text = qArray[questionNum][1][3];
// Выводим номер ответа.
questionNumDisplay = questionNum+1;
// Запоминаем, какой ответ верный.
correctAnswer = int(qArray[questionNum][2]);
// Делаем так, чтобы текст "въезжал" на экран.
animateIn();
}
}
...
Примечание
Когда у вас массив содержится в другом массиве (двумерный массив), к элементу вложенного массива можно обратиться с помощью нескольких скобок. Например, выражение myArray[3][8]обращается в восьмому значению третьего элемента массива myArray.Массив my Array состоит из четырех или более элементов, в третьем элементе содержится, в свою очередь, массив по меньшей мере из девяти элементов.
Функция animateInпозволяет создать эффект появляющегося из-за экрана текста. Она устанавливает положение каждого текстового клипа за рабочим полем справа. Затем для каждого из этих клипов с помощью переменной xstopприсваивается нужное горизонтальное положение. Код, прикрепленный к каждому из этих клипов, перемещает его влево до тех пор, пока он не дойдет до положения xstop.
function animateIn() {
// Определяем положение каждого элемента текста,
// а также указываем место, где клип должен остановиться.
question.xstop = 300;
question._x = 800;
answer0.xstop = 400;
answer0._x = 1000;
answer1.xstop = 400;
answer1._x = 1200;
answer2.xstop = 400;
answer2._x = 1400;
answer3.xstop = 400;
answer3._x = 1600;
}
Когда пользователь щелкает по одной из четырех кнопок, вызывается функция selectAnswer,которой передается номер выбранного ответа (от 0 до 3). Если эта величина равна correctAnswer,звучит сигнал правильного ответа и увеличивается значение numRight.В противном случае воспроизводится сигнал неверного ответа. В любом случае увеличивается значение переменной questionNumи отображается следующий вопрос.
function selectAnswer(n) {
// Добавляем очко, если ответ правильный.
if (n == correctAnswer) {
triggerSound("right");
numRight++;
} else {
triggerSound("wrong");
}
// Отображаем следующий вопрос.
questionNum++;
displayQuestion();
}
Функция triggerSoundпроста, но очень полезна во многих игровых ситуациях. Ее назначение – проигрывать звук, сопровождающий правильный ответ.
function triggerSound(soundName) {
// Проигрываем звук.
soundfx.stop();
soundfx = new Sound();
soundfx.attachSound(soundName);
soundfx.start();
}
Все это касается сценария основной временной шкалы. Однако есть еще два важных маленьких сценария, прикрепленных к другим элементам на рабочем поле. Первый прикреплен к каждому текстовому клипу. Он проверяет, находится ли клип правее положения xstopи, если это так, перемещает его дальше влево. В результате клип продолжает двигаться влево до тех пор, пока его положение не совпадет со значением переменной xstop.Следовательно, если клип располагается справа от экрана, с помощью функции animateInвопрос «въезжает» на экран.
onClipEvent(enterFrame) {
if (_x != xstop) _x -= 20;
}
К каждой кнопке также прикреплен короткий сценарий, который при щелчке по ней вызывает функцию selectAnswerи передает ей значение от 0 до 3. Сценарий следующий:
on (release) {
selectAnswer(0);
}
Для других кнопок вместо 0 будет указано либо 1, либо 2, либо 3.
К сведению
Вам понадобятся два звука, один с именем «right», а другой – «wrong». Также потребуется кнопка «continue», похожая на изображенную на рис. 12.3. Если у вас есть вопросы по работе программы, просмотрите ролик Flashquiz.fla, размещенный на Web-сайте поддержки книги.
Читать дальше
Конец ознакомительного отрывка
Купить книгу