-
Posts
5,139 -
Joined
-
Last visited
-
Days Won
32
Content Type
Profiles
Forums
Calendar
Store
Everything posted by s0rr0w
-
Мы создали локальную (в нашем случае, все же глобальную) переменную animator, но вдобавок еще и свойство у ноды _animator Это сделано для облегчения использования переменной в дальнейшем, нам теперь просто можно присваивать свойства объекту animator, что немедленно отразится на свойствах объекта node._animator, потому что они ссылаются на один и тот же объект. Объект animator присвоен ноде, но он не знает, какой именно ноде он присвоен. Чтобы знал, замыкаем одно на второе. Да. Ты там намудрил прилично. В моем коде не нужны замыкания. Фаербаг в зубы и вперед!
-
class id отсутствует.
-
rgl, открою вам страшную тайну, в PHP ассоциативные массивы можно сортировать. По ключу. http://www.php.net/manual/en/function.ksort.php
-
Синглтон - это один экземпляр класса. Фактически, функциональность, которая капсулирована в некий объект.
-
deprecated фичами не пользуюсь. Для того, чтобы это работало для множества элементов, лучше сделать некий синглтон, который бы нужной ноде приделывал бы анимацию. Например var fade = function( node ){ // do something here } И потом делать fade( "me" );
-
Что-то я сомневаюсь, что вы AS знаете. http://help.adobe.com/en_US/ActionScript/3...90204-7ca8.html Вызов JS функций из AS
-
Длинна массива не зависит от наличия данных у элементов. Вы можете создать массив длинной в 5 элементов, и не заполнять ни одну ячейку. Вы ошибаетесь, думая, что JS работает с памятью или есть какие-то ограничения. Длинна массива может быть декларативной, а может быть реальной. Пустые элементы могут не занимать вообще память, а могут занимать, все зависит от реализации интерпретатора.
-
У тебя есть нода. Она будет выступать объектом анимации. Для анимации нам нужно 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>
-
Процесс создания функций таков. Сначала парсер ищет все декларации 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 еще не определена.
-
Это не ассоциативные массивы, это больше хэши.
-
Массив значений и вектор присваивай напрямую ноде
-
Ну так я и не говорил, что это стоимость железа Яху. Я говорил про то, сколько под похожий проект на старте на железо денег нужно потратить.
-
Вы или не ту книгу читаете, или не в том порядке, или книга такая. Посмотрите раздел про создание массивов.
-
Какая проблема с данной реализацией? Два совершенно независимых стека для анимации подсветки и затухания. Возьмем, например, пять шагов подсветки, и установим там какое-то значение 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) мыши с объекта.
-
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>
-
А где я говорил, что это программная часть? Это я про железки для аналога говорил. Программная часть будет стоить пару десятков миллионов, эт только чтобы хоть как-то приблизиться к Yahoo. А вообще они на R&D более миллиарда тратят. С Яхой тяжеловато бодаться
-
Возможно ли горизонтальное центрирование блока относительно соседних блоков
s0rr0w replied to Belovsan's question in HTML Coding
Это правильное решение. -
Возможно ли горизонтальное центрирование блока относительно соседних блоков
s0rr0w replied to Belovsan's question in HTML Coding
Опоздал с ответом -
Любая, даже самая гениальная идея, не стоит ни копейки без конечной реализации.
-
Белиберда какая-то написана. Сформулируйте правильно вопрос.
-
Для ИЕ есть VML Трансформируйте SVG в VML и будет вам счастье.
-
Если бы вы знали реальную стоимость датацентров Яхи, то не крутили пальцем бы у виска. http://www.betanews.com/article/Yahoo-to-b...woes/1225120275 Это один из датацентров.
-
Кто именно?
-
Ну, базовая стоимость примерно 500-750 килоамериканских рублей.