deepNoise |
03.01.2019 03:38 |
Текстовой квест
Вложений: 2
В общем я набросал дерево действий и событий. Хочу сделать по нему шаблон для квеста, где варианты выбираются нажатием клавиш.
Использовал эффект печати текста их прошлого топика.
Код AS3:
stop();
var myString:String;
var myArray = [];
var delay:int = 100;
var timer1:Timer = new Timer(delay);
var way:String = "null";
stage.addEventListener(KeyboardEvent.KEY_DOWN, on_keyDown);
timer1.addEventListener("timer", frameLooper);
timer1.start();
function frameLooper(event:TimerEvent):void
{
if (myArray.length > 0)
{
answer_tf.appendText(myArray.shift());
}
else
{
timer1.stop();
}
}
function on_keyDown(e:KeyboardEvent):void
{
timer1.stop();
if (e.keyCode == 32 && way == "null")
{//space
way = "1-0";
trace("way="+way);
}
else if (e.keyCode == 49 && way == "1-0")
{//1
way = "1-1";
}
else if (e.keyCode == 50 && way == "1-0")
{//2
way = "1-2";
}
else if (e.keyCode == 51 && way == "1-0")
{//3
way = "1-3";
}
else if (e.keyCode == 52 && way == "1-0")
{//4
way = "1-4";
}
//ways
if (way == "1-0")
{
delay = 20;//скорость печати
answer_tf.text = "";
myString = "Перед вами пещера. Слева - лес. Справа - озеро. Куда пойти?\n1. Пойти налево.\n2. Пойти направо.\n3. Пойти вперёд.\n4. Пойти назад.";
}
else if (way == "1-1")
{
delay = 20;//скорость печати
answer_tf.text = "";
myString = "Вы пошли налево и оказались в лесу. Куда теперь?\n1. Пойти налево.\n2. Пойти направо.\n3. Пойти вперёд.\n4. Пойти назад.";
}
else if (way == "1-2")
{
delay = 20;//скорость печати
answer_tf.text = "";
myString = "Вы пошли направо и пришли к озеру. Куда теперь?\n1. Пойти налево.\n2. Пойти направо.\n3. Пойти вперёд.\n4. Пойти назад.";
}
else if (way == "1-3")
{
delay = 20;//скорость печати
answer_tf.text = "";
myString = "Вы пошли прямо и вошли в пещеру. Куда теперь?\n1. Пойти налево.\n2. Пойти направо.\n3. Пойти вперёд.\n4. Пойти назад.";
}
else if (way == "1-4")
{
delay = 20;//скорость печати
answer_tf.text = "";
myString = "Вы пошли назад и вернулись домой.";
}
if (e.keyCode == 49 || e.keyCode == 50 || e.keyCode == 51 || e.keyCode == 52 || e.keyCode == 32)
{
myArray = myString.split("");
timer1.delay = delay;
timer1.start();
}
trace("Код нажатой клавиши: " + e.keyCode);
}
Сейчас при нажатии клавиши 1, 2, 3, 4, или space текст произошедшего события почему то начинает печататься заново. А если нажать другую клавишу, то текст вовсе исчезнет. Как это исправить?
Возможно ли сделать небольшую паузу, между печатью "Вы пошли налево и оказались в лесу" и "Куда теперь?" ? Если да, то как.
И возможно ли сделать, чтобы варианты действий печатались моментально?
|