Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   самописный текст (http://www.flasher.ru/forum/showthread.php?t=83754)

Milohov 15.08.2006 00:50

самописный текст
 
Господа, хэлп.
как сделать самописный текст. ну, как будто кто-то набирает на клавиатуре...
помню видел где-то тутор... ша найти не могу(((
текста дофига, посему вариант покадрово стирать по одной букве не канает...

DarkLight 15.08.2006 01:12

Базовый вариант:
Код:

var myLongText:String = "bla bla bla bla bla bla bla bla bla bla ";
var counter:Number = 0;
function write():Void {
        if (myLongText.charAt(counter) != "") {
                myField.text += myLongText.charAt(counter);
                counter++;
        } else {
                clearInterval($1);
        }
}
var $1 = setInterval(write, 200);

Интервал от 200 до 400 наиболее реально выглядит
Если хочется естественнее можно использовать setTimeout и ставить 200-400 по рандому

MINASTIS 15.08.2006 10:13

Как вариант
Создаешь текстовое поле с именем "pole"
После в действиях кадра где это поле пишешь.
Код:

var tex:String = "Вот здесь пишется текст, да он и правда здесь пишется... Вы не верите?";
var mel:String = "";
var i:Number = 0;
this.onEnterFrame = function () {
if (pole.text != tex+"_") {
                mel = tex.slice(0, i)+"_";
                pole.text = mel;
                i++;
        } else {
                pole.text = pole.text.slice(0, pole.text.length-1);
                delete this.onEnterFrame; // Если хочешь чтобы в конце мигала палочка убери эту строку
        }
}


DarkLight 15.08.2006 12:40

И еще лучше звук нажатия на клавиши добавить, и будет совсем хорошо...

MINASTIS 15.08.2006 12:53

Ну эт легко.
Всего лишь надо вставть sound.start(); (предварительно создав) после добавления каждой буквы. Вообще будет отлично.

DarkLight 15.08.2006 13:01

Еще лучше вызывать чуть раньше, но когда пробовал это делать, выяснилось, что синхронизация ухудшается...
И еще одна поправка - онЕнтерФрейм выглядит неестественно, текст слишком быстро печатается даже на 12 кадрах в сек
Мне кажется, лучше эту функцию всетаки в интервал - так легче менять частоту появления букв...

MINASTIS 15.08.2006 13:03

Я просто из забвения, никогда с интервалом не работал. :D

Ion 15.08.2006 14:55

Цитата:

Сообщение от DarkLight
setTimeout

чёт в хелпе не видать такой функции...

Ekzi 15.08.2006 15:00

ТОварисчи, смарите, чё я нащёл:yahoo:

DarkLight 15.08.2006 15:06

2Ion
Это недокументированная функция, но существует давно и работает без проблем...в т ч в 9 плеере при воспроизведении файла 8 версии...как интервал, но вызов 1 раз...
Код:

function a() {
        trace("sdddd");
}
setTimeout(a, 300);

Все работает.

есть и clearTimeout - но вроде ничем не отличается от clearInterval, ASnative у них один...


Часовой пояс GMT +4, время: 08:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.