|
|
|||||
Регистрация: Oct 2008
Сообщений: 24
|
Оптимизация фотогалереи (как убить все тормоза?)
Столкнулся с такой проблемой: есть интерактивный сайт с кучей граффики, который должен содержать несколько встроенных фотогалерей. В одну подгружается около 50 изображений примерно по 65 Кб каждое. Если начинать их двигать программно под маской то галерея начинает жутко тупить. Код отдельно от сайта работает на ура. Может ли объём изображений повлиять на скорость выполнения операций с ним и как избавиться от тормозов?
Последний раз редактировалось yanmasharski; 23.07.2009 в 23:29. |
|
|||||
Регистрация: Jun 2009
Сообщений: 28
|
Что значит: "Код отдельно от сайта работает на ура."? Он в дебаг плеере на ура работает? Или без картинок? Или с меньшим количеством картинок?
Насчет тормозов: сделай объектный пул. Т.е. на экране вместо 50 картинок есть (предположим) 10 битмапов, при их прокрутке, достигнув края, первый и последний (или наоборот, в зависимости от направления) меняются местами и грузиться соответствующее изображение из массива. |
|
|||||
Регистрация: Oct 2008
Сообщений: 24
|
Отдельно это если создать новый проект, в котором только эта галерея. С теми же 50 картинками. Про дебаг я промолчу)))
Пул написать на AS3 неосилю, но попробую. Спасибо за ответ. Может ещё варианты есть какие? |
|
|||||
[+6 23.11.09]
|
у тебя получается что в одной флехи много галерей примерно по 50 графических объектов в каждой галереи и идут тормоза? а в отдельности галереи не тормазят да? Тормаза в чем заключаются?
|
|
|||||
Регистрация: Oct 2008
Сообщений: 24
|
Да, именно так.
У меня контейнер общий двигается вправо-влево взависимости от положения мыши. Это всё обрабатывается через setInterval. Когда галерея отдельно, то перемещение проходит плавно, когда включена в сайт, то рывками. Сейчас буду пробовать отключать свойство visible если объект за краями маски, может поможет. Добавлено через 29 часов 1 минуту В итоге ковыряния нашёл что всё проблема возникает при перемещении контейнера с моими изображениями. Пробовал отключать видимость тех объектов, что не под маской. Не помогло. Попробовал "убивать" детей, что не под маской. Помогло. До этого эффект выполнялся за 10 сек. Стал за 5,5сек. Получилось так, что продублировал сетинтервал. Т.е. функция вызывалась в 2х интервалах каждые 10 милисекунд. Это увеличило скорость эффекта (2.5 сек). Решил исправить и убрал лишний интервал, но вместо 10 мс ввёл 5мс. Вернулось в предыдущие 5.5 сек. Попробовал посмотреть время выполнения операции для эффекта через getTimer(). От 0 до 1 мс. Т.е. операция выполняется быстрее, чем её вызывают, значит наложения не происходит. В чём может быть проблема? Или я туплю? |
|
|||||
Регистрация: Jul 2009
Сообщений: 35
|
Попробуй хотя бы локализовать проблему.
Добавь или уменьшь количество картинок, может проблема не в этом. |
|
|||||
.
|
Вы, батенька, не ищите легких путей! =) Замените setInterval на MouseEvent.MOUSE_MOVE.
|
|
|||||
Регистрация: Oct 2008
Сообщений: 24
|
Сие событие не подходит мне) Т.к. Даже при недвижущейся мыши объекты должны двигаться.
Последний раз редактировалось yanmasharski; 26.07.2009 в 22:46. |
|
|||||
Делай на Interval или лучше ENTER_FRAME, но критерием освобождения от листинга сделай скорость движения галереи. Если скорость становиться близка к 0 - убирай все обработчики, на MOUSE_MOVE - врубай их. Ну чтоб постоянно не висели.
__________________
Стой! Опасная зона! Работа мозга! |
Часовой пояс GMT +4, время: 20:26. |
|
« Предыдущая тема | Следующая тема » |
Теги |
галерея , интерактив , фото |
Опции темы | |
Опции просмотра | |
|
|