Jump to content

s0rr0w

User
  • Posts

    5,139
  • Joined

  • Last visited

  • Days Won

    32

Everything posted by s0rr0w

  1. Мы создали локальную (в нашем случае, все же глобальную) переменную animator, но вдобавок еще и свойство у ноды _animator Это сделано для облегчения использования переменной в дальнейшем, нам теперь просто можно присваивать свойства объекту animator, что немедленно отразится на свойствах объекта node._animator, потому что они ссылаются на один и тот же объект. Объект animator присвоен ноде, но он не знает, какой именно ноде он присвоен. Чтобы знал, замыкаем одно на второе. Да. Ты там намудрил прилично. В моем коде не нужны замыкания. Фаербаг в зубы и вперед!
  2. rgl, открою вам страшную тайну, в PHP ассоциативные массивы можно сортировать. По ключу. http://www.php.net/manual/en/function.ksort.php
  3. Синглтон - это один экземпляр класса. Фактически, функциональность, которая капсулирована в некий объект.
  4. deprecated фичами не пользуюсь. Для того, чтобы это работало для множества элементов, лучше сделать некий синглтон, который бы нужной ноде приделывал бы анимацию. Например var fade = function( node ){ // do something here } И потом делать fade( "me" );
  5. Что-то я сомневаюсь, что вы AS знаете. http://help.adobe.com/en_US/ActionScript/3...90204-7ca8.html Вызов JS функций из AS
  6. Длинна массива не зависит от наличия данных у элементов. Вы можете создать массив длинной в 5 элементов, и не заполнять ни одну ячейку. Вы ошибаетесь, думая, что JS работает с памятью или есть какие-то ограничения. Длинна массива может быть декларативной, а может быть реальной. Пустые элементы могут не занимать вообще память, а могут занимать, все зависит от реализации интерпретатора.
  7. У тебя есть нода. Она будет выступать объектом анимации. Для анимации нам нужно 1. Массив значений прозрачностей 2. Направление движения (вектор), который будет равен 1, если мы подсвечиваем элемент, и -1, если убираем прозрачность. 3. Некая функция, которая зациклена сама на себя, которая будет выполнять некоторое действие. Зацикливание делается через таймаут 4. Есть два события: активация и затухание. <div id="me" style="background: #fc2">hover me</div> <script type="text/javascript"> var node = document.getElementById( "me" ); var animator = node._animator = {}; // создаем свойство ноды animator.node = node; // замыкаем объект и ноду animator.opacities = [ 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ]; // наш массив значений animator.vector = 0; // направление движения, по умолчанию 0 animator.index = 9; // текущий индекс в нашем массиве, равен 9, т.е. opacity = 1 animator.loop = function ( ) { var self = this; setTimeout( function(){ self.loop() }, 13 ); // запускаем саму себя через время var newIndex = this.index + this.vector; // смотрим, какой новый индекс if ( newIndex < 0 || newIndex >= this.opacities.length || this.vector == 0 ) return; // если новый индекс за пределами значений или вектор равен 0, то выходим this.index = newIndex; // присваиваем новый индекс this.node.style.opacity = this.opacities[ newIndex ]; // устанавливаем новую прозрачность }; animator.loop(); node.onmouseover = function( ) { this._animator.vector = -1 }; // при наведении и уводе мыши меняем вектор node.onmouseout = function( ) { this._animator.vector = 1 }; </script>
  8. Процесс создания функций таков. Сначала парсер ищет все декларации function, которые есть в коде, и определяет их. Например function foo1 () {} function foo2 () {} Далее уже идет выполнение кода. Если встречается лямбда-функция, которая определена как var foo = function () {} То процесс создания функции немного другой. Тут создается анонимная функция, и присваивается переменной. Стоит отметить, что в случае обычной декларации функции можно делать вызовы функций в любом порядке, а вот в случае с лямбда-функциями нужно помнить про очередность создания функций. Например var foo2 = function () { alert( foo1() ) }; foo2(); // alert "1" function foo1 () { return 1 } Хотя декларация функции foo1 идет после вызова foo2, функция сработает правильно. А вот в таком примере var foo2 = function () { alert( foo1() ) }; foo2(); var foo1 = function () { return 1 } будет ошибка исполнения, так как функция foo1 еще не определена.
  9. Это не ассоциативные массивы, это больше хэши.
  10. Массив значений и вектор присваивай напрямую ноде
  11. Ну так я и не говорил, что это стоимость железа Яху. Я говорил про то, сколько под похожий проект на старте на железо денег нужно потратить.
  12. Вы или не ту книгу читаете, или не в том порядке, или книга такая. Посмотрите раздел про создание массивов.
  13. Какая проблема с данной реализацией? Два совершенно независимых стека для анимации подсветки и затухания. Возьмем, например, пять шагов подсветки, и установим там какое-то значение opacity 0 > .25 > .50 > .75 > 1 Что нам нужно сделать, когда пользователь не дождался конца анимации и решил убрать курсор? Например, это произошло на 3м шаге, впереди еще два значения. .50 > .75 > 1 Мы должны пойти в обратном направлении и начать анимацию затухания .50 > .25 > 0 Итак, мы можем предкалькулировать некие значения опасити и записать их в массив opacity_vals = [ 0, 0.25, 0.5, 0.75, 1 ] Потом взять одну функцию, которая запущена циклически через timeout, и которой передавать направление движения, например 1 или -1 Брать текущую позицию, например 0, прибавлять вектор (1 или -1), смотреть, если новое значение меньше 0 или больше длинны массива opacity_vals, то ничего не делать, иначе присваивать текущую позицию равной самой себе плюс вектор. Вектор присваивается при наведении (1) или при уводе (-1) мыши с объекта.
  14. var arr = [ 1, 2, 3 ]; arr[ 'abc' ] = 10; Чтобы было более понятно, то это звучит примерно так: Есть грузовик arr. В кузове грузовика лежит три коробки: 1, 2, 3. В кабину подсела попутчица. Сколько коробок в кузове? Правильно, три. Потому что элементы массива и свойства массива совершенно разные вещи. Абстрактно в XML этот массив можно описать так <array> <properties> <property name="abc">10</property> </properties> <elements> <element index="0">1</element> <element index="1">2</element> <element index="2">3</element> </elements> </array>
  15. А где я говорил, что это программная часть? Это я про железки для аналога говорил. Программная часть будет стоить пару десятков миллионов, эт только чтобы хоть как-то приблизиться к Yahoo. А вообще они на R&D более миллиарда тратят. С Яхой тяжеловато бодаться
  16. Любая, даже самая гениальная идея, не стоит ни копейки без конечной реализации.
  17. Белиберда какая-то написана. Сформулируйте правильно вопрос.
  18. s0rr0w

    svg

    Для ИЕ есть VML Трансформируйте SVG в VML и будет вам счастье.
  19. Если бы вы знали реальную стоимость датацентров Яхи, то не крутили пальцем бы у виска. http://www.betanews.com/article/Yahoo-to-b...woes/1225120275 Это один из датацентров.
  20. Ну, базовая стоимость примерно 500-750 килоамериканских рублей.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy