Форум 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=77259)

v350 21.03.2006 14:32

Как обеспечить максимальную плавность движения текста
 
Друзья, хочется подвести итог в данном вопросе.
Задача - автоматический горизонтальный скроллинг текста (бегущая строка). Динамическое текстовое поле, внутри мувиклипа, в которое грузится достаточно большая текстовая строка. Шрифт - псевдопиксель, без алиясинга, embed, 8px. Мувиклип под маской примерно 100px в ширину.
Нужно добиться максимальной плавности движения текста - без рывков, тормозов и т.д.

В голову приходит 2 варианта:

1. вызов метода перемещения с помощью setInterval раз в 10 мс (насколько я понимаю минимально возможная величина), внутри метода изменять координату _x на 1 px. Обновлять экран с помощью updateAfterEvent(). Поскольку используем updateAfterEvent() FPS не важен.


При таком методе строка движется относительно равномерно, но как-то не слишком плавно... Возникают иногда как-бы небольшие рывки...
уменьшение смещения за один раз меньше 1px во первых вызывает смаз пиксельного текста, а во-вторых слишком медленно становится.


2. использовать mx.transitions.easing.None.easeNone - честно говоря, разницы на взгляд с первым вариантом не увидел.

Коллеги, прошу, поделитесь наработками! Как двигать текст максимально плавно?

KUZEN 21.03.2006 16:34

Хочешь реальное пиксельное табло почитай Гурского у него есть примерчик, правда это намного сложнее чем твой пример )))

v350 21.03.2006 18:08

у Гурского видел этот пример, но мне нужно именно шрифтом реализовать..

v350 21.03.2006 20:22

Господа профи, уделите 3 минуты... :)

Пуннокио 31.05.2006 09:43

Всем привет.

У меня тоже по данной теме есть вопрос.
Впринципе, я просто сдвигаю клип содержащий текст, путем залания координаты клипа по х или у взависимости от того куда смещать
При вертикальном смещении текств, все ок.
А горизонтальное не очень нравтся.
То есть вопросом того как зациклить и т.д. нет проблем, единственное
вид перемещаемого текста.
У меня используется HTML текст

Может кто подскажет какие варианты есть сделать реально плавное смещение? так чтобы глаз спокойнос смотрел?


спасибо

Пуннокио 31.05.2006 15:56

Ну так? смотрю бегущая строка на флеше не почете...

поставим вопрос по другому, плавное горизотальное перемещение?

может в этом кто разбирается?

:)

iNils 31.05.2006 17:09

Мне не понятно по каким критериям оцениваешь "нравится-не нравится"
Можешь показать свой вариант вертикального скролла который нравится и горизонтального который не нравится?

aksios 31.05.2006 17:19

Цитата:

Сообщение от Пуннокио
может в этом кто разбирается?
:)

Че за наезд?

MyXus 31.05.2006 17:45

У меня вот параллельный вопрос. Я сделал строку, которая скролится под маской. Т.к. текст нормально не маскируется, пришлось перевести его в кривые, но эт не проблема в данном случае. Проблема в том, что при смещении этого объекта возникают немыслимые тормоза. Просто писец полный настает. А в строке всего 3-5к точек в ширину (в высоту - 15).

iNils 31.05.2006 17:58

Цитата:

Сообщение от MyXus
У меня вот параллельный вопрос. Я сделал строку, которая скролится под маской. Т.к. текст нормально не маскируется, пришлось перевести его в кривые, но эт не проблема в данном случае. Проблема в том, что при смещении этого объекта возникают немыслимые тормоза. Просто писец полный настает. А в строке всего 3-5к точек в ширину (в высоту - 15).

Используй программную маску.

etc 31.05.2006 18:10

MyXus, двигай часть строки.

MyXus 31.05.2006 18:30

2iNils, __etc: программная маска полностью сняла тормоза. Факт для меня совершенно непонятный.

Пуннокио 31.05.2006 18:34

2 Aksyos - никаких наездов, что такой агрессивный сам.

это не бар, а форум, и эмоции не всегда удается передать, а некоторые и читают, пропуская через себя

2 MyXus - да, используй программную маску.
Честно говоря не понял даже, что ты там с шрифтами делал, но с помощью ПМ можно использовать даже HTML текст

iNils 31.05.2006 18:38

Код:

_root._x = _root._y = 200;
////
str = "1234567890 abcdefghijklmnoABCDEFGHIJKLMN ";
//// создаем маску
this.createEmptyMovieClip ("mcMaska", 0);
this.mcMaska.beginFill (0, 10);
this.mcMaska.lineTo (100, 0);
this.mcMaska.lineTo (100, 20);
this.mcMaska.lineTo (0, 20);
this.mcMaska.lineTo (0, 0);
this.mcMaska.endFill ();
//// создаем бегущую строку
this.createEmptyMovieClip ("mcText", 1);
this.mcText.createTextField ("txt1", 0, 0, 0, 100, 20);
this.mcText.createTextField ("txt2", 1, 0, 0, 100, 20);
this.mcText.txt1.autoSize = this.mcText.txt2.autoSize = true;
this.mcText.txt1.text = this.mcText.txt2.text = str;
this.mcText.txt2._x = this.mcText.txt1._width;
this.mcText.setMask (this.mcMaska);
//// бежим
this.mcText.moveText = function () {
        this._x -= 2;
        if (this._x < -this.txt1._width) {
                this._x += this.txt1._width;
        }
        updateAfterEvent ();
};
setInterval(this.mcText, "moveText", 5);


Пуннокио 31.05.2006 18:42

а у тебя есть в рабочем варианте что-то горизонтальное, хочу сравнить с тем что у меня получается.

правда у меня код немного другой, проще гораздо,
используется смшещение клипа, а потом, при смещении на определенное число, смещение на начало клипа, то есть строка текста содержит еще дополнительный кусок равный окну прокрутки

scourge ' kangaroo 31.05.2006 19:07

дополнительный кусок равный окну прокрутки?... выкини свой код на помойку...

miramax 31.05.2006 21:31

Цитата:

Сообщение от MyXus
Я сделал строку, которая скролится под маской.

есть ещё и scrollRect, в хелпе поищи

MyXus 01.06.2006 14:06

Хм. Забавно. Правда, код - не короче чем для самодельной маски :-)
надо бы потестить этот механизм на скорость.

Obrazcoff 18.12.2007 00:40

Цитата:

Сообщение от iNils
Код:

_root._x = _root._y = 200;
////
str = "1234567890 abcdefghijklmnoABCDEFGHIJKLMN ";
//// создаем маску
this.createEmptyMovieClip ("mcMaska", 0);
this.mcMaska.beginFill (0, 10);
this.mcMaska.lineTo (100, 0);
this.mcMaska.lineTo (100, 20);
this.mcMaska.lineTo (0, 20);
this.mcMaska.lineTo (0, 0);
this.mcMaska.endFill ();
//// создаем бегущую строку
this.createEmptyMovieClip ("mcText", 1);
this.mcText.createTextField ("txt1", 0, 0, 0, 100, 20);
this.mcText.createTextField ("txt2", 1, 0, 0, 100, 20);
this.mcText.txt1.autoSize = this.mcText.txt2.autoSize = true;
this.mcText.txt1.text = this.mcText.txt2.text = str;
this.mcText.txt2._x = this.mcText.txt1._width;
this.mcText.setMask (this.mcMaska);
//// бежим
this.mcText.moveText = function () {
        this._x -= 2;
        if (this._x < -this.txt1._width) {
                this._x += this.txt1._width;
        }
        updateAfterEvent ();
};
setInterval(this.mcText, "moveText", 5);


реально самое плавное скроллирование получилось с помощью этого кода. Сам пробовал попиксельно сдвигать. Но по-другому. Получилось хуже :victory:

aQuestion 18.12.2007 11:46

плавнее всего будет когда this._x -= 0.050001; убедитесь с помощью контекстного меню->Zoom In

iNils 18.12.2007 14:07

Цитата:

Сообщение от aQuestion
убедитесь с помощью контекстного меню->Zoom In

Zoom In ни о чем не говорит, так данные будут совсем другие.

BaranovYuriy 27.12.2007 19:47

посмотри anptv.net (вернее, только на строку новостей). Если нравится - вышлю исходник.

ulik 23.01.2008 19:39

v350, ваши варианты (1 и 2), описанные в первом посте идентичны. mx.transitions.easing.None.easeNone - люди писали. Откройте класс и загляните.

в тему: setInterval(0), изменяйте ккординату на +=.2 или .5 в конце, после отановки движения this._y = Math.round(this._y)


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

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