![]() |
Помогите дописать ActionScript-ик
Хочу вывести текстовую строку в виде отдельных букв (которые потом можно анимировать) с помощью ActionScripts.
Попробовал сам - не получилось. Последовательность действий была следующей: 1. Создал динамическое текстовое поле, задав ему переменную "letter". 2. Преобразовал это поле в MovieClip с переменной "sym0". 3. В первом кадре сцены пишу: // // Ввел нужный мне текст: text = "Тра-та-тушки, тра-та-та!"; // // Убрал символ дублируемой буквы, чтоб не мешался: sym0._visible = false; // // Организовал цикл по всей длине текстовой строки: for (i=1; i<=text.length; i++) { // // Продублировал символ с буквой, присвоив ей номер очередной буквы в строке: duplicateMovieClip("sym0", "sym"+i, i); // // Задал цель в виде символа с текущей буквой: tellTarget ("sym"+i) { // // Присвоил переменной динамического текстового поля текущую букву строки: letter = _parent.text.substring(i, 1); } // // Сдвинул текущий символ вправо, чтобы выстроить буквы в ряд: setProperty("sym"+i, _x, i*40); } 4. Запускаю мульт, получается много букв "Т". :( Я думаю, что проблема в дублировании клипов. ИМХО Flash не различает переменные letter в разных клипах, для него это одна переменная. Так где же я торможу? |
letter = _parent.text.substring(i, 1);
Почему - (i, 1)? Должно быть - (i-1,i) :D |
Цитата:
Спасибки на добром слове. ;) |
Правда, все равно, не то получилось. Теперь он в каждом символе весь текст пишет... :(
|
Вот такой вариант проходит.
Пробовал без создания в цикле текст.полей - ни хрена/при дублировании переменная/имя текст.поля не передаётся и как тут извратится, чего то не додумал/. Хотя вопрос конечно интересный.Получается, что при дублиров., в дубликате имеется дин.поле с неопределённым именем.Такая вот непонятка. Этот вариант - вполне рабочий, мож можно и попроще, но тут националисты навалились, еле успеваю отбиваться. :p test="Текст для проверки"; this.createEmptyMovieClip("mmm", 99); this.mmm.createTextField("mytext", 1, 0, 0, 0, 0); this.mmm.mytext.autoSize="left"; this.mmm.mytext.text = test; this.mmm._visible=0; for(i=1;i<=test.length;i++){ this.mmm.duplicateMovieClip("mmm"+i,99+i); this["mmm"+i].createTextField("mytext", 1, 0, 0, 0, 0); this["mmm"+i].mytext.autoSize="left"; this["mmm"+i].mytext.text = test.substring(i-1, i); this["mmm"+i]._x=20*i; } |
Ух-х-х... Мощно! Холый скрипт, да еще и работает! Правда, 3, 4 и 5 строчки лишние... :)
Нет слов, одна благодарность! |
| Часовой пояс GMT +4, время: 19:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.