Эффект печатающегося текста

Здесь представлен ещё один вариант эффекта печатающегося текста на ActionScript. Сразу скажу, что не являюсь автором кода. Оригинальный код был написан на JavaScript и размещён на странице ошибки 404 в виде своеобразного монолога от имени веб-сервера. Эффект мне понравился и я его немного переделал под ActionScript. Может и пригодится...

Сперва просто посмотрим на работу данного кода. Для этого кликните курсором мышки в любом месте флеш-ролика, который расположен ниже.

Загрузить Adobe Flash Player

Сделать такой текстовый эффект довольно просто.

Первым делом, мы должны создать динамическое текстовое поле по имени 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) можно скачать здесь.

Вот теперь точно всё.

Автор: admin

Дата добавления: 2011-10-17

Просмотров: 8461

Рейтинг поста: +5-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): яповчанка
Дата добавления: 2015-11-03
Разобралась ..)))
Благодарю!!!!
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2015-11-03
Того исходника нет, но выглядело это как-то так: https://yadi.sk/d/2v30gylskCgVU
Комментатор
Комментарий добавил(а): яповчанка
Дата добавления: 2015-11-03
Здравствуйте!!!
А можно попросить исходник с кнопкой повтора для печатающегося текста под Adobe Flash CS5.5?
не получается у меня..ну никак((((
Комментатор
Комментарий добавил(а): Mari
Дата добавления: 2014-12-26
Спасибо большое. Всё получилось.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-25
Результат:

Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-25
> Помогите, пожалуйста решить вопрос. Как сделать кнопку повтора, чтобы она появлялась после того как печать текста закончится.

Как вариант:


/*
Создаём массив, каждый элемент которого является отдельной строчкой текста.
*/
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++] + " ";
}
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
{
index = 0;
pos = 0;
update_btn.visible = true;
}
}
else
{
setTimeout(printText, delay);
}
}
/*
Запускаем работу кода.
*/
printText();
/*
кнопка повтора
*/
update_btn.visible = false;
update_btn.addEventListener(MouseEvent.CLICK, onClickUpdateBtnFunc);
function onClickUpdateBtnFunc(event:MouseEvent):void {
update_btn.visible = false;
printText();
}
Комментатор
Комментарий добавил(а): Mari
Дата добавления: 2014-12-25
Помогите, пожалуйста решить вопрос. Как сделать кнопку повтора, чтобы она появлялась после того как печать текста закончится.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-12-09
Можно несколько раз продублировать код, приведённый выше. Но следите за тем, чтобы имена переменных были бы уникальными. А можно всё это запилить в класс, а потом создавать экземпляры класса. Второй путь, наверно, предпочтителен. Более подробно здесь - «Эффект печатающегося текста»
Комментатор
Комментарий добавил(а): Denis
Дата добавления: 2012-12-07
А как добавить несколько печатающихся текстов?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2012-11-14
В Macromedia Flash и Adobe Flash у динамического поля в панели Свойств доступно много параметров настройки, в том числе и шрифт. Если шрифт редкий, то надо его обязательно встроить/внедрить.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Страница 1 из 2: 12
Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика