Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   млый посимвольный вывод текста (https://javascript.ru/forum/project/42081-mlyjj-posimvolnyjj-vyvod-teksta.html)

keen 11.10.2013 15:03

милый посимвольный вывод текста
 
когда программисту хочется отдохнуть, он иногда пишет программы для души.
вот и я написал маленький скрипт для банального, но симпатичного вывода текста. может когда-нибудь куда-нибудь прикручу (хотя вряд ли).

собсна демка - тыц.

сам скрипт написан на vanilla JS, но в демке для мерцания курсора подключил jQuery.
сделал несколько параметров для кастомизации - если открыть исходный код, станет ясно что к чему.

domius 11.10.2013 23:55

На чистом JS можно зделать в 10 строк ).

keen 11.10.2013 23:57

а чем тебе vanilla JS не угодил? :p

devote 12.10.2013 00:09

keen,
так все отлично, тока вместо setTimeout лучше юзай setIntrerval

Deff 12.10.2013 00:24

keen,
Звук бы еще прилепить: Cкрябанья по бумаге, либо подобие принтера

ruslan_mart 12.10.2013 18:06

Цитата:

fSuccess: function () {
var str = $('#printer').html(),
flag = false,
iId;

iId = setInterval(function () {
flag = !flag;
$('#printer').html(str + (flag ? 'в–€' : ''));
}, 500);

setTimeout(function () {
clearInterval(iId);
}, 60 * 1000);
}
Конечно мелочи, но всё же лучше сделать так:

fSuccess: function () {
	var printer = $('#printer'),
		str = printer.html(),
		flag = false,
		iId;

	iId = setInterval(function () {
		flag = !flag;
		printer.html(str + (flag ? 'в–€' : ''));
	}, 500);

setTimeout(function () {
	clearInterval(iId);
    }, 60 * 1000);
}


Чтобы каждый раз не юзать $('#printer'). :)

Цитата:

flag = !flag;
Иногда так делаю:
flag ^= 1;

Но это уже наверное дело вкуса. :D

А так прикольно сделано, + ;)

keen 14.10.2013 12:04

Цитата:

Сообщение от devote (Сообщение 276036)
keen,
так все отлично, тока вместо setTimeout лучше юзай setIntrerval

зачем :blink:
сеттаймаут у меня - чтобы через минуту курсор перестал моргать. нахрена там интервал?

Цитата:

Сообщение от Ruslan_xDD (Сообщение 276098)
Конечно мелочи, но всё же лучше сделать так:
var printer = $('#printer')

Чтобы каждый раз не юзать $('#printer'). :)

угу. там ещё в одном месте длина строки дважды считается, можно вынести var len = str.length
мелочи..

Цитата:

Сообщение от Ruslan_xDD (Сообщение 276098)
Иногда так делаю:
flag ^= 1;

Но это уже наверное дело вкуса. :D

ну это, согласись, не так очевидно как c "!"

keen 14.10.2013 12:09

Цитата:

Сообщение от Deff (Сообщение 276037)
keen,
Звук бы еще прилепить: Cкрябанья по бумаге, либо подобие принтера

либо попискивания, как в фильме "матрица", либо..

скрипт можно модифицировать до бесконечности :agree:

devote 14.10.2013 12:55

Цитата:

Сообщение от keen
сеттаймаут у меня - чтобы через минуту курсор перестал моргать. нахрена там интервал?

не заметно:
fPrint = function (x) {
        var fin1 = (x + 1 < str.length) ? str[x + 1] : '',
            fin2 = (x + 2 < str.length) && !(str[x] in splitter) && !(str[x + 1] in splitter) ? str[x + 2] : '';
 
        element.innerHTML = '<div>' + str.substr(0, x + 1).replace('\n', '<br/>', 'g') +
            '<span class="' + options.style1 + '">' + fin1 +'</span>' +
            '<span class="' + options.style2 + '">' + fin2 + '</span>';
*!*
        setTimeout(function () {
*/!*
            if (x < str.length - 1) {
                return fPrint(++pos);
            }
            options.fSuccess();
        }, fIntervaler(str[x + 1]));
    };

keen 14.10.2013 13:17

ты не уловил суть :-?
там интервал меняется в зависимости от выводимых символов - так, например, после точки он чуть больше.
вывод получается более человеческий: закончили предложение - подождали немного прежде чем выводить следующее.


Часовой пояс GMT +3, время: 15:48.