Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Набирающийся текст ("печатающийся")
Flash Zone Forum > Macromedia Flash > ActionScript
rustamh
Здравствуйте! я новичек в action script и новичек на форуме. Короче новичек в квадрате. И мне очень сильно нужна поддержка. Хочу разбираться потихоньку - но зацепиться пока не за что.
Как можно создать функцию, и как ее применить, чтобы она на входе имея заданную строку на выходе давала набирающийся текст. Как примерно мы его видим когда глядим на то, как печатаем - с мигающим курсором. Помимо строки текста, в качестве параметра должны быть скорость набора и параметры текста (цвет скажем, размер букв, шрифт  и т.п.)
я пытался самостоятельно разобраться - и единственное до чего смог додуматься - использовать функцию

substring(string.text,_root._currentframe,1)

но она работает, только когда я ее вставлю ее в каждый кадр клипа. Подскажите пожалуйста, как один раз написать скрипт, и сделать так, чтобы он исполнялся на каждом кадре, без его повторного написания внутри кадров. Ну и если можно, помогите пожалуйста задействовать доп. параметры строки и скорость набора.

заранее большое спасибо всем откликнувшимся.
chingachgoog
Вот такой способ придумал: rolleyes.gif

Код
function toBlinkText(tf, txt, delay){
    // tf - имя текстового поля
    // txt - вводимый текст
    // delay - задержка в мс
    
    if (!txt.length) return // завершение работы функции
    
    var oldTxt=tf.text
    var addLetter=""
    var nextStep=txt
    var endLetter=oldTxt.charAt(oldTxt.length-1)
    
    if (endLetter=="│"){
        oldTxt=oldTxt.slice(0,oldTxt.length-1)
        addLetter=" "
    } else if (!oldTxt.length || ((!(oldTxt.length%2) && (txt.length%2)) || ((oldTxt.length%2) && !(txt.length%2)))){
        addLetter="│"
    } else {
        addLetter=nextStep.charAt(0)
        nextStep=nextStep.slice(1)
        if (oldTxt.length){
            oldTxt=oldTxt.slice(0,oldTxt.length-1)
        }
    }

    tf.text=oldTxt+addLetter
    updateAfterEvent()
    setTimeout(arguments.callee, delay, tf, nextStep, delay)
}

toBlinkText(tf,'Моя функция',10)
rustamh
 спасибо большое что откликнулись.
но я даже не знаю куда этот код вставить sad.gif
создал текстовое поле "динамик текст", назвал его tf , и вставил весь код в первый кадр получается. - но когда запускаю - показывается только вопрос неподвижный
rustamh
 странно, но когда пытаюсь открыть файл фла через  Macromedia Flash MX - выдает ошибку "неизвестный формат файла". sad.gif
хотя конечно же фла обычно открываются нормально
chingachgoog
Не повезло...
У меня CS3 и я и так сохранил под 8-й флеш-редактор. А Flash MX - это 6-й. Поза-поза-позавчерашний день.

Код тоже рассчитан под 8-й флеш-плеер (или под 7-й минимум, т.к. по-моему в 6-м ФП еще не было setTimeout).
rustamh
 хорошо что сказал! это мне товарищ дал дистриб. щас поищу и качну если что!
вот мне счастье улыбнулось, что я познакомился с тобой! даже не ожидал такой помощи от форума если честно!!!
rustamh
 звучит конечно подлизисто - но это правда искренне smile.gif
chingachgoog
Обычно я "показываю на удочку, а не даю рыбу" ©
В данном случае же мне самому стало интересно сделать алгоритм "моргания курсора" без передачи дополнительного параметра - текущего статуса моргания (их тут три: знак "│" добавлен, знак "│" заменен на пробел, пробел заменен на следующий символ из задаваемой строки)
rustamh
Я вчера только нашел MX 8 и опробовал функцию . здоровская. всегда мечтал о такой . но хотел разобраться, запустил отладчик, посмотрел малость - но меня сон срубил наповал (т.к. это после работы было).
Уважаемый chingachgoog , не могли бы вы подписать комменты к коду, пожалуйста, чтобы можно было разобраться полегче?
chingachgoog
Цитата(rustamh @ 17.06.2009 - 12:18) *
не могли бы вы подписать комменты к коду, пожалуйста, чтобы можно было разобраться полегче?


А что конкретно не ясно?
То что в блоке if?
Это реализация моих получасовых изысканий по определению статуса моргания (см. ниже). Довольно трудно объяснить, т.к. ситуация не простая и осложнена тем, что изначально число букв в строке может быть и четным и нечетным, а работать должно одинаково. В общем не парьтесь с глобальной логикой, лучше просто представьте это как черный ящик, который выдает нужный текущий символ и сконцентрируйтесь на остальном механизме функции.
rustamh
 хорошо. перестану вас мучить и буду лучше читать литературу по теме smile.gif и help. кстати в MX 8 просто опупенный хелп, вместе с самоучителем!! smile.gif
rustamh
 раз уж, chingachgoog, предлагаешь смотреть на функцию как на черный ящик - сделай в функции параметр, который будет указывать, с какой стороны будет мелькать курсор. - справа или слева. И переделай пожалуйста его - чтобы он был прямо в притирку с текстом и постоянно мигал. Как курс на этом форуме например, когда я печатаю сейчас этот текст.
Если нет - тогда сам буду разбираться smile.gif
chingachgoog
Цитата(rustamh @ 24.06.2009 - 05:39) *
Если нет - тогда сам буду разбираться smile.gif


"Верной дорогой идете, товарищ." ©
biggrin.gif
rustamh
Цитата(chingachgoog @ 24.06.2009 - 12:35) *
"Верной дорогой идете, товарищ." ©
biggrin.gif



biggrin.gif  наконец-то меня перестали баловать и приучать к самостоятельности!
HaWK
Цитата
вот мне счастье улыбнулось, что я познакомился с тобой! даже не ожидал такой помощи от форума если честно!!!

chigachgoog, ну ты прям супермэн...
HaWK
Цитата
даже не ожидал такой помощи от форума если честно!!!

rustamh, тебе повезло, что ты попал сюда, тут действительно очень хорошо помогают
marsoff
 спасибо, перерыл инет нет ничего по такой тематике интересного и промтого как в этом примере
MustLive
marsoff, всегда пожалуйста.

Наш форум и в том числе chingachgoog всегда рады помочь. И как видно по отзывам и по скачиваниям его примера - этот пример кода для эффекта набирающего текста интересует многих людей wink.gif.
Русская версия IP.Board © 2001-2013 IPS, Inc.