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

Niall86 31.01.2008 19:47

Бегущая срока - быстродействие
 
Вложений: 1
День добрый.
Передо мной была поставлена задача написать бегущую строку на 400 символов, так чтобы текст бежал не по прямой, а под переменным наклоном. Полазив по инету, в том числе по этому форуму, я сваял то, что представленно ниже.
Но есть одно "но" - в результате этот ролик грузит 60% процессора (AMD Athlon 2500).

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

Код:

stop();
dx=3;//шаг дискретизации.. сдвига текста
Text = "Добро пожаловать! Вы находитесь на Web-сайте бла бла бла. Передо мной была поставлена задача написать бегущую строку на 400 символов, так чтобы текст бежал не по прямой, а под переменным наклоном. Полазив по инету, в том числе по этому форуму, я сваял то, что представленно ниже. Но есть одно "но" - в результате этот ролик грузит 60% процессора (AMD Athlon 2500).";
//разбиваем строку на буковки
for (var i = 0; i<Text.length; i++) {
        this.createTextField("txt"+i, this.getNextHighestDepth(), 20*i+440, 30, 0, 0);
        this["txt"+i].autoSize="center";
        this["txt"+i].embedFonts = true;
        this["txt"+i].text = Text.substr(i, 1);
        this["txt"+i].textColor=0x717776;//серый
        this["txt"+i]._alpha=1;//текст возникает не резко, а постепенно буквы становятся все ярче
}
//запоминаем масштаб, потому что он будет меняться
Xscale = this["txt"+1]._xscale;
Yscale = this["txt"+1]._yscale;

onEnterFrame = function () {
                for (var i = 0; i<Text.length; i++) {
                this["txt"+i]._x -= dx;//текст бежит справа налево
                //участок слева, "последняя миля".
                if (this["txt"+i]._x > -20 && this["txt"+i]._x < 233){
                        this["txt"+i]._y += dx*0.2;
                        this["txt"+i]._rotation =-7.5;
                        this["txt"+i]._yscale = this["txt"+i]._yscale/1.00175;
                        this["txt"+i]._xscale = this["txt"+i]._xscale/1.00175;
                }
                //участок справа
                if (this["txt"+i]._x > 233 && this["txt"+i]._x < 437){
                        if (this["txt"+i]._x < 437){
                                this["txt"+i]._alpha+=3;
                        }
                        this["txt"+i]._y += dx*0.05;
                        this["txt"+i]._rotation = -3;
                        this["txt"+i]._yscale = this["txt"+i]._yscale/1.000477;
                        this["txt"+i]._xscale = this["txt"+i]._xscale/1.000477;
                }
                //после того, как строка пробежала - вертаем ее на исходную
                if (this["txt"+i]._x < -20){
                        this["txt"+i]._x = 20*Text.length+437;
                        this["txt"+i]._y = 30;
                        this["txt"+i]._yscale = Yscale;
                        this["txt"+i]._xscale = Xscale;
                        this["txt"+i]._alpha=5;
                }
                this["txt"+i].setTextFormat(new TextFormat("ar_font",20));
                }
};

P.S. Эта же флэшка на 50 символов грузит проц на 10-20%

iNils 31.01.2008 20:17

А зачем вы вот это
Код:

this["txt"+i].setTextFormat(new TextFormat("ar_font",20));
делаете постоянно?

Niall86 31.01.2008 21:05

iNils
Спасибо, что указали мне! Упустил из виду. Я не ожидал что это занимает так много процессорного времени.
Переместил строку наверх, в стадию инициализации (1й цикл for) загрузка упала до 35%

Можно еще что нибудь поменять, чтобы снизить загрузку до 20%?

iNils 31.01.2008 21:22

Символы которые находятся за пределами флешки или с минимальной альфой, прятать с помощью _visible = false.

Niall86 31.01.2008 21:49

Сделал. Еще убрал внутреннее условие if (this["txt"+i]._x < 437) как бессмысленное в данном случае (само выражение this["txt"+i]._alpha+=3; естественно оставил, во внешнем условии if (this["txt"+i]._x > 233 && this["txt"+i]._x < 437))
Загрузка 30-33%.

Что еще? :)

P.S. Измени пожалуйста назване - вставь букву "т" в слово "срока" - а то не найдут если что. Да и звучит неприлично)


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

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