PDA

Просмотр полной версии : самописный текст


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
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 у них один...

MINASTIS
15.08.2006, 15:46
ТОварисчи, смарите, чё я нащёл то же самое что у меня только хуже. У меня еще полоска в конце идет и убавляется когда текст закончен.

Ekzi
15.08.2006, 17:15
и правда.. чё я не проверил, когда к вам потащил.. сорри

Ion
15.08.2006, 17:34
2Ion
Это недокументированная функция, но существует давно и работает без проблем...в т ч в 9 плеере при воспроизведении файла 8 версии...как интервал, но вызов 1 раз...
function a() {
trace("sdddd");
}
setTimeout(a, 300);
Все работает.

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

Milohov
15.08.2006, 19:57
спасибо, ребята)