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

zelik 27.05.2009 12:11

Устранение "эффекта дрожания" текстовых полей
 
Всем доброго дня!

Делаю что-то, похожее не телетекст следующим образом:

Код AS1/AS2:

var container:MovieClip = this.createEmptyMovieClip("text_mc", 1);
        var container2:MovieClip = container.createEmptyMovieClip("maska_mc", 2);
        container2.beginFill(0xFF0000);
        container2.moveTo(0,0);
        container2.lineTo(MoveWidht,0);
        container2.lineTo(MoveWidht,MoveHeight);
        container2.lineTo(0,MoveHeight);
        container2.lineTo(0,0);
        container2.endFill();
        text_mc.setMask(container2);
//container0 - мувик для текстовых полей
        container.createEmptyMovieClip("container0",0);
        container.container0._x = 0;
        container.container0._y = MoveHeight;

Потом в container.container0 помещаю нужное кол-во TextField (один ниже другого) и запускаю функцию go

Код AS1/AS2:

function go(container:MovieClip) {
        container.container0.dy = container.container0._y;
 
        container.onEnterFrame = function() {
 
                if (container.container0._y>-container.container0._height) {
                        container.container0._y -= 1;
                } else {
                        container.container0._y = container.container0.dy;
                        go(container);
                }
        };
}

алгоритм работает хорошо. Но вот только, если раскрываю флеш на весь экран (а в проекте так и надо), то видно постоянное подергивание текста...

Что можете предложить?

Заранее спасибо!

джонатан 27.05.2009 12:20

Анти альясинг ставить нужно for animation для текстовых полей

zelik 27.05.2009 12:27

извините, а где это ставиться?

mooncar 27.05.2009 12:32

Вот кусок из хелпа, если вы создаете TextField программно:
Код AS1/AS2:

var my_text1:TextField = this.createTextField("my_text1", this.getNextHighestDepth(), 10, 10, 300, 30);
my_text1.text = "This text uses advanced anti-aliasing.";
my_text1.antiAliasType = "advanced";
 
var my_text2:TextField = this.createTextField("my_text2", this.getNextHighestDepth(), 10, 50, 300, 30);
my_text2.text = "This text uses normal anti-aliasing."
my_text2.antiAliasType = "normal";

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

zelik 27.05.2009 12:33

так пробовал, все равно есть дрожание...

mooncar 27.05.2009 12:36

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

PeSH 27.05.2009 12:49

Я бы вам посоветовал делать из текста битмап. То есть прорисовывать клип с текстом в битмап, а само текстовое поле прятать или убивать. Таким образом у вас будет не текстовое поле, а битмап картинка, а у нее такого эффекта не наблюдается.
Для прорисовки используйте объект класса BitmapData и его метод draw. Почитайте справку, если еще не пользовались, там все понятно расписано.

Добавлено через 46 секунд
А для атача в клип метод attachBitmap класса MovieClip

zelik 27.05.2009 15:35

PeSH, спасибо, сейчас буду разбираться

Добавлено через 54 минуты
И все таки не понимаю, запутался...
У меня есть динамическое кол-во текстовых полей. Мне нужно каждое из них помещать в свой битмат, а потом все битмапы в клип, который двигаю?
А вообще можно аттачить к клипу динамическое кол-во битмапов? Или для каждого битмапа создавать промежуточный клип?

dimarik 27.05.2009 16:59

Двигайте текстовое поле по целым пикселям

zelik 27.05.2009 17:02

Да я вроде бы так и делаю

Код AS1/AS2:

function go(container:MovieClip) {
        container.container0.dy = container.container0._y;
 
        container.onEnterFrame = function() {
 
                if (container.container0._y>-container.container0._height) {
                        container.container0._y -= 1;
                } else {
                        container.container0._y = container.container0.dy;
                        go(container);
                }
        };
}

Добавлено через 2 часа 49 минут
поместил все TextField в BitmapData и вре равно есть дрожение.

Кто-нибудь может еще что-то посоветовать?


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

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