Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Оптимизация фотогалереи (http://www.flasher.ru/forum/showthread.php?t=127813)

yanmasharski 23.07.2009 23:13

Оптимизация фотогалереи (как убить все тормоза?)
 
Столкнулся с такой проблемой: есть интерактивный сайт с кучей граффики, который должен содержать несколько встроенных фотогалерей. В одну подгружается около 50 изображений примерно по 65 Кб каждое. Если начинать их двигать программно под маской то галерея начинает жутко тупить. Код отдельно от сайта работает на ура. Может ли объём изображений повлиять на скорость выполнения операций с ним и как избавиться от тормозов?

JinRu 24.07.2009 01:19

Что значит: "Код отдельно от сайта работает на ура."? Он в дебаг плеере на ура работает? Или без картинок? Или с меньшим количеством картинок?
Насчет тормозов: сделай объектный пул. Т.е. на экране вместо 50 картинок есть (предположим) 10 битмапов, при их прокрутке, достигнув края, первый и последний (или наоборот, в зависимости от направления) меняются местами и грузиться соответствующее изображение из массива.

yanmasharski 24.07.2009 01:27

Отдельно это если создать новый проект, в котором только эта галерея. С теми же 50 картинками. Про дебаг я промолчу)))

Пул написать на AS3 неосилю, но попробую. Спасибо за ответ.
Может ещё варианты есть какие?

WRC_S 24.07.2009 07:28

у тебя получается что в одной флехи много галерей примерно по 50 графических объектов в каждой галереи и идут тормоза? а в отдельности галереи не тормазят да? Тормаза в чем заключаются?

yanmasharski 24.07.2009 18:37

Да, именно так.
У меня контейнер общий двигается вправо-влево взависимости от положения мыши. Это всё обрабатывается через setInterval. Когда галерея отдельно, то перемещение проходит плавно, когда включена в сайт, то рывками.
Сейчас буду пробовать отключать свойство visible если объект за краями маски, может поможет.

Добавлено через 29 часов 1 минуту
В итоге ковыряния нашёл что всё проблема возникает при перемещении контейнера с моими изображениями.
Пробовал отключать видимость тех объектов, что не под маской. Не помогло.
Попробовал "убивать" детей, что не под маской. Помогло.
До этого эффект выполнялся за 10 сек. Стал за 5,5сек.

Получилось так, что продублировал сетинтервал. Т.е. функция вызывалась в 2х интервалах каждые 10 милисекунд. Это увеличило скорость эффекта (2.5 сек). Решил исправить и убрал лишний интервал, но вместо 10 мс ввёл 5мс. Вернулось в предыдущие 5.5 сек.

Попробовал посмотреть время выполнения операции для эффекта через getTimer(). От 0 до 1 мс. Т.е. операция выполняется быстрее, чем её вызывают, значит наложения не происходит.

В чём может быть проблема? Или я туплю?

elfon 26.07.2009 01:25

Попробуй хотя бы локализовать проблему.
Добавь или уменьшь количество картинок, может проблема не в этом.

dimarik 26.07.2009 02:49

Цитата:

Сообщение от yanmasharski (Сообщение 837966)
У меня контейнер общий двигается вправо-влево взависимости от положения мыши. Это всё обрабатывается через setInterval

Вы, батенька, не ищите легких путей! =) Замените setInterval на MouseEvent.MOUSE_MOVE.

yanmasharski 26.07.2009 12:59

Цитата:

Сообщение от dimarik (Сообщение 838233)
Вы, батенька, не ищите легких путей! =) Замените setInterval на MouseEvent.MOUSE_MOVE.

Сие событие не подходит мне) Т.к. Даже при недвижущейся мыши объекты должны двигаться.

dimarik 27.07.2009 11:42

Timer еще есть. Зачем правильным пацанам setInterval!

marat_sa 27.07.2009 13:25

Делай на 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
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.