Page 98 - jQuery для начинающих
P. 98

Получившийся код будет работать следующим образом:
                    1.  единожды будет вызвана функция set

                    2.  функция run будет вызвана N-раз, при этом progress будет себя вести аналогично
                       tween.pos

             Теперь,  возвращаясь  к  изначальной  задачи  по  изменению  цвета  можно  наворотить
             следующий код:



                    $.Tween.propHooks.color = {
                           set: function(tween) {
                                  // приводим начальное и конечное значения к единому формату

                                  // #FF0000 == [255,0,0]
                                  tween.start = parseColor(tween.start);

                                  tween.end = parseColor(tween.end);
                                  tween.run = function(progress) {

                                         tween.elem.style['color'] =
                                                 // вычисляем промежуточное значение
                                                 buildColor(tween.start, tween.end, progress);

                                  }
                           }
                    }

                    Код функций parseColor() и buildColor() вы найдёте в листинге color.html


             Результатом станет плавное перетекание исходного цвета к красному (#F00 == #FF0000 ==
             255,0,0), вживую можно посмотреть на странице color.html



                    В  плагине  jQuery  Color  для  решения  поставленной  задачи  использовали
                    jQuery.cssHooks, но мы же не ищем лёгких путей.


             Ещё  хотел  было  рассказать  про  префильтры  анимации,  но  –  документации  нет,  а  как
             использовать «в жизни» – я не догадался, но чуть-чуть информации таки накопал:


                    jQuery.Animation.prefilter(function(element, props, opts) {

                           // deffered объект animate
                           // код можете найти в функции «Animation»
                           this;

                           element; // искомый элемент
                           props;   // настройки анимации из animate()

                                                                                                         98


                                                                                        www.trk.kg
   93   94   95   96   97   98   99   100   101   102   103