Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Оптимизация работы галереи (https://javascript.ru/forum/project/12070-optimizaciya-raboty-galerei.html)

RaskolnikOFF 29.09.2010 10:01

Оптимизация работы галереи
 
Доброго времени суток всем. Сделал движущуюся галерею с помощью jquery. Вроде бы все устраивает, но есть пару моментов.
1) Иногда немного притормаживает. А если очень часто кликать по кнопке прокрутки, то через какое-то время рисунки вообще исчезают. Потом появляются снова, когда галерея "отвиснет".
2) на медленных интернетах работает просто ужасно. Из-за того что рисунки не успевают подгрузится до начала работы скрипта, происходит полный беспредел: рисунки накладываются друг на друга и т.п.
Посмотреть на галерею и код можно по адресу http://furnistek.by/shtory/. Буду признателен за советы, как оптимизировать работу галереи.

Skipp 29.09.2010 10:46

1) делай прелоад изображений и показывай прокрутку, только после полной загрузки.
2) оптимизируй код, наверно ты слишком накрутил с циклами.
3) открой firebug выбери одну из картинок и смотри как и когда изменяется свойство left

RaskolnikOFF 29.09.2010 12:50

Спасибо, вечером попробую разобраться с прелоадами

RaskolnikOFF 29.09.2010 22:44

Ну прелоад вроде сделал, только вот не пойму, помогло или нет) Дома работает нормально, на работе буду смотреть, там у меня инет тупой)
Но уже есть вопросы - как узнать, что прошла полная загрузка? Это к тому, что советуют начинать прокрутку только после полной загрузки.

Skipp 30.09.2010 09:19

у объекта img есть события onload и onerror.

Gozar 30.09.2010 11:40

RaskolnikOFF, кнопки влево и вправо должны действовать наоборот. Стрелка показывает вправо, при нажатии галерея должна ползти влево.

ps: здесь нечего оптимизировать, скрипт еще не дописан. У вас кривая логика скрипта. Сначала напишите скрипт целиком, потом оптимизируйте. Через 10 сек. работы с программой она ломается.

RaskolnikOFF 30.09.2010 14:44

Gozar По поводу кнопок вопрос спорный, но поменять не проблема. А вот по поводу недописан - не согласен. У меня дома скрипт работает часами без проблем. Почему он ломается у вас через 10 сек, не знаю. Если не трудно, укажите в коде, где именно он не дописан. Я лично считаю, что проблема именно в его "неоптимизированности"

Gozar 30.09.2010 14:58

RaskolnikOFF,
нет вопрос не спорный, у вас нелогично, а значит криво, вы не первый на этом форуме с такими кнопками, тыкают по стрелке для того чтобы увидеть новое, а не получить пинок вдогонку виденным. Кроме ie у вас скрипт везде работает не правильно, криво. FF, Opera, Chrome.

RaskolnikOFF 30.09.2010 15:34

Gozar
В чем неправильность работы скрипта, я не понимаю? Напишите конкретней. По задумке галерея должна бесконечно крутиться в замкнутом цикле, пока на нее не наведешь. По нажатию на стрелки - двигаться в определенную сторону. Что из этого не работает у Вас?
IE - единственный браузер, в котором я не проверял скрипт) Странно, что у Вас именно в нем он работает правильно)
По поводу стрелок в принципе согласен. Вы не первый, кто это говорит. Но другие люди говорили, что все хорошо. Имхо, это не принципиально.

Gozar 30.09.2010 16:10

RaskolnikOFF, если вы хотите быть упрямым, мне плевать, пусть об этом вам скажет кто-нибудь другой. Не умеете тестировать скрипты, на это мне тоже плевать.

RaskolnikOFF 30.09.2010 16:43

Gozar
Мне упрямым смысла быть нету. Я помощи ищу, а не правоту свою стремлюсь доказать. Если в логике кода есть ошибка, то укажите на нее.
Может вы имеете ввиду кусок с прелоадом? Там я действительно поначалу не разобрался и не дописал немного. Но он никак по идее не должен влиять на работу остальной части кода. Можете его проигнорировать. А можете посоветовать, что там править надо. Или ссылкой поделиться, как ентой штукой пользоваться правильно, а то что-то гугл не шибко помогает.
Peace, bro.

Gozar 30.09.2010 16:45

RaskolnikOFF, кликните 10-15 раз на стрелку вправо/влево.

RaskolnikOFF 30.09.2010 17:03

Если быстро кликать, рисунки исчезают.Через некоторое время они появляются снова. Я это знал. Вот поэтому и встал вопрос оптимизации. Складывается чувство, что браузер просто не успевает отрисовывать их. Или что то вроде. Может просто сделать как в IE, чтобы на слишком быстрые нажатия скрипт просто не реагировал. Т.е. срабатывал раз в полсекунды например?

Gozar 30.09.2010 17:29

RaskolnikOFF,
У вас кривой код, можете хоть на тумбочку встать и кричать что это оптимизация, но это ничего не изменит. Вам нечего оптимизировать у вас код не дописан, не написан или криво написан, выбирайте одно из трех определений какое больше нравиться.

ps: а вообще это ГОВНОКОД, т.к. криво написан с применением jquery(не в обиду будет сказано этой маленькой либе).

RaskolnikOFF 30.09.2010 17:38

Gozar
Откуда ему быть ровным, если я неделю назад первый раз jquery увидел? А Вы бы вместо "комплиментов" моему коду дали бы хоть один дельный совет. А то "пальцы гнуть" каждый может.

Gozar 30.09.2010 17:49

Цитата:

Сообщение от RaskolnikOFF (Сообщение 72532)
дали бы хоть один дельный совет.

я вам его дал, пишите так чтобы работало в ie,ff,opera,chrome.

jquery нужна для того чтобы писать кросс-браузерный код, а не быстро написать какой-нибудь.

RaskolnikOFF 30.09.2010 17:59

А конкретней? Я же уже говорил, что у меня работает. Кликал в опере 18 раз, все норм было. Вы еще не сказали ничего того, чтобы я не знал. Судя по карме у Вас достаточно опыта, чтобы сказать что-нибудь по существу, а не просто: "Все неправильно, сделай правильно". Если бы для меня ошибки были очевидны, я бы советов не спрашивал.

Gozar 30.09.2010 18:16

Цитата:

Сообщение от RaskolnikOFF (Сообщение 72541)
Если бы для меня ошибки были очевидны, я бы советов не спрашивал.

Ошибки исправляют отладкой, любые, ясен пень что для вас они не очевидны, они не для кого не очевидны, пока не начнешь их искать, поэтому они называются ошибки. Или вы думаете что я пишу только правильный код с первого раза?

HelpeR 06.10.2010 16:21

RaskolnikOFF, что бы не происходил глюк прокрутки, после клика на стрелку отключайте обработчик onclick и только после того, как прокрутка закончится включайте его обратно. Можете посмотреть как это сделал я http://jsprime.fuzaylov.net/preview/PhotoLine/

Gozar 06.10.2010 20:41

HelpeR,
с чего вы взяли что вы сделали хорошо, я далеко ходить не буду:

photos : ['1.jpg','2.jpg','3.jpg'], // названия рисунков ленты
    big_photos : ['1b.jpg','2b.jpg','3b.jpg'], // название больших рисунков
    pic_dir : '/img/', // директория хранения рисунков
    titles : ['Описание1','Описание2','Описание3'], //Описание к фотографиям

так делать неудобно, потому что если идет выборка из базы, то нужно сложить аж три массива чтобы подставить потом в ленту, я молчу про расширяемость. Гораздо проще кормить в ленту объект, а не клепать массивы превращая хорошую идею в говно. И определитесь наконец какой у вас стиль написания переменных:
такой: pic_padding
такой: paddingBot
или такой: Blackout

а то вот это в js выглядит как порнография: Blackout_src


Часовой пояс GMT +3, время: 21:02.