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

koIIImarik 13.01.2009 04:30

Необходимы советы по оптимизации сайта
 
Здравствуйте.

Не так давно нами (студия Simpepack — дизайн, я — программирование ианимация) был разработан сайт этой же студии: http://simplepack.ru/

Сайт (AS2) очень объёмный с большим количеством анимации и программирования, в частности очень большое количество анимации привело к некоторым тормозам на начальной страничке.

Всвязи с этим хотел бы у вас поинтересоваться:

1) Есть ли у кого-нибудь мысли, как можно оптимизировать нагрузку на процессор на главной странице сайта?
2) В частности меня интересует оптимизация следующего кода, который отвечает за движение влево-право на начальной странице:

Код AS1/AS2:

//Функции предевижения
function onMouseMove()
{
        //trace("onMouseMove");
        // 1280 / 2 + 300 = 940
        if (this._xmouse >= 1040 && this._xmouse <= 1280)
        {
                this._aX = Math.round((1040 - this._xmouse) / 40);
        }else if (_xmouse <= 240 && _xmouse >= 0)
        {
                this._aX = Math.round((240 - this._xmouse) / 40);
        }else
        {
                this._aX = 0;
        }
        //
        //trace("_aX " + this._aX);
}
//
function setMove_func()
{
        trace("setMove_func");
        this.removeMove_func();
        this.move_int = setInterval(move_func, 30, this);
}
function removeMove_func()
{
        clearInterval(this.move_int);
}
function move_func(varThis:MovieClip)
{
        //trace("move_func " + varThis + "| varThis.cont_mc " + varThis.cont_mc);
        varThis._vX += varThis._aX;
        varThis.cont_mc._x += varThis._vX;
        if (varThis.cont_mc._x > 0)
        {
                varThis.cont_mc._x = 0;
        }else if (varThis.cont_mc._x < varThis._clearWidth)
        {
                varThis.cont_mc._x = varThis._clearWidth;
        }
        //
        varThis._vX *= varThis._k;
                varThis._vX = (Math.round(varThis._vX) == 0)?0:varThis._vX;
}

В начале инициализации класса идёт вызов setMove(), как видно из кода, эта функция вызвается примерно 33 раза в секунду и просчитывает необходимое движение мувика.

scarbo 13.01.2009 10:39

Ну, во-первых ты этот здоровенный клип двигаешь под маской или используешь scrollrect?
Есть еще мыслишки про битмапу
Потом (это конечно не оптимизация)я еле нашел пункты меню,не понятно где-что.Может их лучше сразу подписать,без onRollOverов?

etc 13.01.2009 12:20

Вот хоть убей, не понимаю, зачем в именах классов делать постфикс _class, в функциях _func, передавать странные ссылки типа varThis, ну зачем, а?

dmitriev 13.01.2009 12:31

Цитата:

Сообщение от __etc (Сообщение 790072)
Вот хоть убей, не понимаю, зачем в именах классов делать постфикс _class, в функциях _func, передавать странные ссылки типа varThis, ну зачем, а?

Мне думается что человеческий мозг и не на такое способен, вообще объективных причин так делать нет, скорее всего это проблема психоанализа, невроз.

koIIImarik 13.01.2009 14:39

2 scarbo:
1) Здоровенный клип двигается под маской, там маска накладывается вообще на весь сайт, чтобы на более больших разрешениях он "не выходил" за пределы. Думаю использовать "scrollrect" не получится, т.к. с помощью него можно изменять только целочисленные значения, а хотелось бы добиться плавного движения.

2) cacheAsBitmap, по-моему, тут не канает, т.к. большой фон, позади, передвигается вместе со всем содержимым, а значит перерисовывается, значит весь cacheAsBitmap идёт насмарку. Если я где-то ошибаюсь, то поправьте меня.

2 _etc:
Просьба звучала в помощи по оптимизации работы сайта, и были поставлены конкретные вопросы, вы на них не ответили, значит вы флеймите. Вывод: забаньте себя сами.

Но даже не смотря на это, я так привык писать, возможно вам это покажется не правильным, но мне это не правильным не кажется, по крайней мере на данный момент. Если можете привести объективные причины, почему программисту так лучше не делать — выслушаю. Ещё лучше, если вы приведёте примеры или советы по оптимизации сайта.

Кстати, на счёт varThis, меня вообще давно парил вопрос с setInterval, и то, что внутри него нельзя ссылаться на объект, в теле которого он вызывался, через this. Поэтому переменная varThis у меня — это аналог this, чтобы в setInterval() можно было обращаться к экземпляру, который вызывал интервал. Если есть более красивый аналог, то буду благодарен за "просвящение".

2 dmitriev:
Люди, я с вас фигею, зачем вести себя, как базарные бабки с одним желанием обосрать кого-то. Я буду благодарен, если вы тут приведёте примеры, почему так писать нельзя и научите меня "красивому" коду. Ещё лучше, если вы ответите на поставленные вопросы в топике, это для меня сейчас более важно.

dimarik 13.01.2009 14:45

Та не, не переживайте. Вы хотя бы this используете. А это большой плюс =)

etc 13.01.2009 14:51

Цитата:

Сообщение от koIIImarik (Сообщение 790114)
Если можете привести объективные причины, почему программисту так лучше не делать — выслушаю.

Эти постфиксы — избыточная информация, а вытекает она, скорее всего, из-за того, что используется плохой редактор кода без автокомплита.

Цитата:

Сообщение от koIIImarik (Сообщение 790114)
Если есть более красивый аналог, то буду благодарен за "просвящение".

http://livedocs.adobe.com/flash/9.0/...=00001216.html
Обратите внимание на варианты использования setInterval.

scarbo 13.01.2009 14:52

К вопросу об оптимизации,повторю еще раз
Цитата:

Ну, во-первых ты этот здоровенный клип двигаешь под маской или используешь scrollrect?

dimarik 13.01.2009 14:56

По существу. Вы не фансайт и, скорее всего люди в интернете ищут что-то и хотят найти и получить это быстро. Сайт Вашей %companyname% на моих 2 Mbit грузился порядка 10 секунд. Не будь другой мотивации, я, скорее всего, закрыл бы страничку на 5-6 секунде. Сравните с поисковыми системами. Звук тем более там бессмысслен.

scarbo 13.01.2009 15:02

Цитата:

scrollrect" не получится, т.к. с помощью него можно изменять только целочисленные значения
Да ну?Что то у меня карта метро и обл. двигается нормально


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

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