Здесь представлен ещё один вариант эффекта печатающегося текста на ActionScript. Сразу скажу, что не являюсь автором кода. Оригинальный код был написан на JavaScript и размещён на странице ошибки 404 в виде своеобразного монолога от имени веб-сервера. Эффект мне понравился и я его немного переделал под ActionScript. Может и пригодится...
Сперва просто посмотрим на работу данного кода. Для этого кликните курсором мышки в любом месте флеш-ролика, который расположен ниже.
Сделать такой текстовый эффект довольно просто.
Первым делом, мы должны создать динамическое текстовое поле по имени myText. Отдельный акцент делаю на том, что данное поле должно быть многострочным.
Когда текстовое поле появится на сцене флеш-ролика, можем переходить к написанию кода ActionScript. Код мы будем писать на главной временной шкале нашего флеш-ролика.
Код ActionScript 2.0:
/*
Создаём массив, каждый элемент которого является отдельной строчкой текста.
*/
var arr:Array = new Array(
"Тот ураган прошел.",
"Нас мало уцелело.",
"На перекличке дружбы многих нет.",
"Я вновь вернулся в край осиротелый,",
"В котором не был восемь лет.",
"Кого позвать мне?",
"С кем мне поделиться",
"Той грустной радостью, что я остался жив?",
"Здесь даже мельница - бревенчатая птица",
"С крылом единственным - стоит, глаза смежив.",
"Я никому здесь не знаком,",
"А те, что помнили, давно забыли.",
"И там, где был когда-то отчий дом,",
"Теперь лежит зола да слой дорожной пыли.",
"А жизнь кипит.",
"Вокруг меня снуют",
"И старые и молодые лица.",
"Но некому мне шляпой поклониться,",
"Ни в чьих глазах не нахожу приют.",
"И в голове моей проходят роем думы:",
"Что родина?",
"Ужели это сны?",
"Ведь я почти для всех здесь пилигрим угрюмый",
"Бог весть с какой далекой стороны.",
"И это я!",
"Я, гражданин села,",
"Которое лишь тем и будет знаменито,",
"Что здесь когда-то баба родила",
"Российского скандального пиита.",
"Но голос мысли сердцу говорит:",
"\"Опомнись! Чем же ты обижен?",
"Ведь это только новый свет горит",
"Другого поколения у хижин.",
"Уже ты стал немного отцветать,",
"Другие юноши поют другие песни.",
"Они, пожалуй, будут интересней",
"- Уж не село, а вся земля им мать\".",
"Ах, родина!",
"Какой я стал смешной.",
"На щеки впалые летит сухой румянец",
"Язык сограждан стал мне как чужой,",
"В своей стране я словно иностранец.",
"Вот вижу я:",
"Воскресные сельчане",
"У волости, как в церковь, собрались.",
"Корявыми, немытыми речами",
"Они свою обсуживают \"жись\".",
"Уж вечер.",
"Жидкой позолотой",
"Закат обрызгал серые поля.",
"",
"С. Есенин",
"",
"",
""
);
/*
Скорость печати текста в миллисекундах.
*/
var delay:Number = 60;
/*
Количество видимых строк.
*/
var all:Number = 8;
/*
Вспомогательные переменные.
*/
var index:Number = 0;
var pos:Number = 0;
var strLength:Number = arr[0].length;
var contents:String;
var row:Number;
/*
Идентификатор для setInterval() (он необходим, чтобы остановить работу функции setInterval()).
*/
var intervalID;
/*
Функция, которая выводит текст в текстовое поле.
*/
function printText()
{
contents = "";
row = Math.max(0,index - all);
while (row < index)
{
contents += arr[row++] + "\n";
}
myText.text = contents + arr[index].substring(0,pos) + "_";
clearInterval(intervalID);
if (pos++ == strLength)
{
pos = 0;
index++;
if (index != arr.length)
{
strLength = arr[index].length;
intervalID = setInterval(printText, delay);
}
}
else
{
intervalID = setInterval(printText, delay);
}
}
/*
Запускаем работу кода.
*/
printText();
Честно говоря, использование setInterval() я не могу назвать удачным решением, но это вполне рабочее решение :-)
Код ActionScript 3.0:
/*
Создаём массив, каждый элемент которого является отдельной строчкой текста.
*/
var arr:Array = new Array(
"Тот ураган прошел.",
"Нас мало уцелело.",
"На перекличке дружбы многих нет.",
"Я вновь вернулся в край осиротелый,",
"В котором не был восемь лет.",
"Кого позвать мне?",
"С кем мне поделиться",
"Той грустной радостью, что я остался жив?",
"Здесь даже мельница - бревенчатая птица",
"С крылом единственным - стоит, глаза смежив.",
"Я никому здесь не знаком,",
"А те, что помнили, давно забыли.",
"И там, где был когда-то отчий дом,",
"Теперь лежит зола да слой дорожной пыли.",
"А жизнь кипит.",
"Вокруг меня снуют",
"И старые и молодые лица.",
"Но некому мне шляпой поклониться,",
"Ни в чьих глазах не нахожу приют.",
"И в голове моей проходят роем думы:",
"Что родина?",
"Ужели это сны?",
"Ведь я почти для всех здесь пилигрим угрюмый",
"Бог весть с какой далекой стороны.",
"И это я!",
"Я, гражданин села,",
"Которое лишь тем и будет знаменито,",
"Что здесь когда-то баба родила",
"Российского скандального пиита.",
"Но голос мысли сердцу говорит:",
"\"Опомнись! Чем же ты обижен?",
"Ведь это только новый свет горит",
"Другого поколения у хижин.",
"Уже ты стал немного отцветать,",
"Другие юноши поют другие песни.",
"Они, пожалуй, будут интересней",
"- Уж не село, а вся земля им мать\".",
"Ах, родина!",
"Какой я стал смешной.",
"На щеки впалые летит сухой румянец",
"Язык сограждан стал мне как чужой,",
"В своей стране я словно иностранец.",
"Вот вижу я:",
"Воскресные сельчане",
"У волости, как в церковь, собрались.",
"Корявыми, немытыми речами",
"Они свою обсуживают \"жись\".",
"Уж вечер.",
"Жидкой позолотой",
"Закат обрызгал серые поля.",
"",
"С. Есенин",
"",
"",
""
);
/*
Скорость печати текста в миллисекундах.
*/
var delay:uint = 60;
/*
Количество видимых строк.
*/
var all:uint = 8;
/*
Вспомогательные переменные.
*/
var index:uint = 0;
var pos:uint = 0;
var strLength:uint = arr[0].length;
var contents:String;
var row:uint;
/*
Функция, которая выводит текст в текстовое поле.
*/
function printText()
{
contents = "";
row = Math.max(0,index - all);
while (row < index)
{
contents += arr[row++] + "\n";
}
myText.text = contents + arr[index].substring(0,pos) + "_";
if (pos++ == strLength)
{
pos = 0;
index++;
if (index != arr.length)
{
strLength = arr[index].length;
setTimeout(printText, delay);
}
}
else
{
setTimeout(printText, delay);
}
}
/*
Запускаем работу кода.
*/
printText();
Вот и всё. Запускаем флеш-ролик и проверяем работу нашего текстового эффекта.
Исходники под Macromedia Flash 8 (язык ActionScript 2.0) и Adobe Flash CS5.5 (язык ActionScript 3.0) можно скачать здесь.
Вот теперь точно всё.
У меня только один вопрос, как изменить Шрифт текста?