![]() |
Оптимизация фотогалереи (как убить все тормоза?)
Столкнулся с такой проблемой: есть интерактивный сайт с кучей граффики, который должен содержать несколько встроенных фотогалерей. В одну подгружается около 50 изображений примерно по 65 Кб каждое. Если начинать их двигать программно под маской то галерея начинает жутко тупить. Код отдельно от сайта работает на ура. Может ли объём изображений повлиять на скорость выполнения операций с ним и как избавиться от тормозов?
|
Что значит: "Код отдельно от сайта работает на ура."? Он в дебаг плеере на ура работает? Или без картинок? Или с меньшим количеством картинок?
Насчет тормозов: сделай объектный пул. Т.е. на экране вместо 50 картинок есть (предположим) 10 битмапов, при их прокрутке, достигнув края, первый и последний (или наоборот, в зависимости от направления) меняются местами и грузиться соответствующее изображение из массива. |
Отдельно это если создать новый проект, в котором только эта галерея. С теми же 50 картинками. Про дебаг я промолчу)))
Пул написать на AS3 неосилю, но попробую. Спасибо за ответ. Может ещё варианты есть какие? |
у тебя получается что в одной флехи много галерей примерно по 50 графических объектов в каждой галереи и идут тормоза? а в отдельности галереи не тормазят да? Тормаза в чем заключаются?
|
Да, именно так.
У меня контейнер общий двигается вправо-влево взависимости от положения мыши. Это всё обрабатывается через setInterval. Когда галерея отдельно, то перемещение проходит плавно, когда включена в сайт, то рывками. Сейчас буду пробовать отключать свойство visible если объект за краями маски, может поможет. Добавлено через 29 часов 1 минуту В итоге ковыряния нашёл что всё проблема возникает при перемещении контейнера с моими изображениями. Пробовал отключать видимость тех объектов, что не под маской. Не помогло. Попробовал "убивать" детей, что не под маской. Помогло. До этого эффект выполнялся за 10 сек. Стал за 5,5сек. Получилось так, что продублировал сетинтервал. Т.е. функция вызывалась в 2х интервалах каждые 10 милисекунд. Это увеличило скорость эффекта (2.5 сек). Решил исправить и убрал лишний интервал, но вместо 10 мс ввёл 5мс. Вернулось в предыдущие 5.5 сек. Попробовал посмотреть время выполнения операции для эффекта через getTimer(). От 0 до 1 мс. Т.е. операция выполняется быстрее, чем её вызывают, значит наложения не происходит. В чём может быть проблема? Или я туплю? |
Попробуй хотя бы локализовать проблему.
Добавь или уменьшь количество картинок, может проблема не в этом. |
Цитата:
|
Цитата:
|
Timer еще есть. Зачем правильным пацанам setInterval!
|
Делай на Interval или лучше ENTER_FRAME, но критерием освобождения от листинга сделай скорость движения галереи. Если скорость становиться близка к 0 - убирай все обработчики, на MOUSE_MOVE - врубай их. Ну чтоб постоянно не висели.
|
| Часовой пояс GMT +4, время: 09:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.