Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Написание метода подобного .animate() (https://javascript.ru/forum/misc/18783-napisanie-metoda-podobnogo-animate.html)

(Sandr) 15.07.2011 14:16

Написание метода подобного .animate()
 
1. Как бы это не звучало смешно, но я решил написать себе подобие мини фрэймворка на js :lol:
Когда начал писать метод, подобный .animate() в jQuery, то столкнулся с некоторыми трудностями.. А именно с "конструкцией запроса" (не смог найти подходящего слова).

В jQuery это выглядит так:
$('ид').animate({height: 'show', width: 'show'}, 200);

У меня obj.animate(id,speed,px);

Сразу видно, насколько мой метод коряв и не динамичен. В нём сразу изменяется и ширина и высота элемента, лишая пользователя выбора..

Подскажите пожалуйста, как сделать конструкцию, примерно такую же как в jQuery?
Например, obj('ид').animate({аргумент: 'значение'},speed,px);

Kolyaj 15.07.2011 14:22

Зачем вам метод animate. Сделать любую конкретную анимацию очень просто, сделать универсальную функцию анимации очень сложно.

(Sandr) 15.07.2011 14:37

Цитата:

Сообщение от Kolyaj (Сообщение 113459)
Зачем вам метод animate. Сделать любую конкретную анимацию очень просто, сделать универсальную функцию анимации очень сложно.

Ну как бы попрактиковаться в подобном, да и самому интересно как и что там)
Да и к тому же мне не нужна универсальная, мне нужно чтоб она выполняла изменение высоты и ширины)
Основная проблема состоит в том, как передать {аргумент: 'значение', аргумент2: 'значение2' и т.д.}

monolithed 15.07.2011 17:10

Цитата:

Сообщение от (Sandr)
Основная проблема состоит в том, как передать {аргумент: 'значение', аргумент2: 'значение2' и т.д.}

это самое простое что может быть в этой функции, один из вариантов:

({
     bar : function(obj) {
          for(i in obj) {
                alert(i + ' : ' + obj[i]);
          }
     }
}).bar({
    color : 'red',
    height: '14px'
});

(Sandr) 15.07.2011 17:43

Цитата:

Сообщение от monolithed (Сообщение 113495)
это самое простое что может быть в этой функции, один из вариантов:

({
     bar : function(obj) {
          for(i in obj) {
                alert(i + ' : ' + obj[i]);
          }
     }
}).bar({
    color : 'red',
    height: '14px'
});

Ооо.. спасибо, но можно другой вариант, чуточку по проще?)) А то в этом я понял только
function(obj) {
          for(i in obj) {
                alert(i + ' : ' + obj[i]);
          }
     }


Или можешь дать ссылку, где рассказывается про подобные конструкции?

monolithed 15.07.2011 17:56

Цитата:

Сообщение от (Sandr)
Или можешь дать ссылку, где рассказывается про подобные конструкции?

все в голове.

Цитата:

Сообщение от (Sandr)
но можно другой вариант, чуточку по проще?

куда проще?

function Foo(obj) {
    for(i in obj) {
         alert(i + ' : ' + obj[i]);
    }
}

Foo({
    color : 'red',
    height: '14px'
});

(Sandr) 15.07.2011 18:10

monolithed,
О! Спасибо, это то, что нужно))

(Sandr) 15.07.2011 18:33

monolithed,
Написал, теперь "запрос" выглядит так:
$.animate({width: 'close', height: 'close'}, id,speed,px);

Как думаешь, если судить по внешнему виду, то терпимо смотрится?))

monolithed 15.07.2011 18:48

Цитата:

Сообщение от (Sandr)
$.animate({width: 'close', height: 'close'}, id,speed,px);

тогда уж так:
$('#id').animate({width: 'value', height: 'value'}, speed);

также можно сделать второй вариант инициализации (как в jQuery)
а вообще, если есть сомнения, посмотрите как эта функция реализована библиотеках

(Sandr) 15.07.2011 19:07

monolithed,
"а вообще, если есть сомнения, посмотрите как эта функция реализована библиотеках", дело в том, что когда пытаюсь разобраться в чужом коде, то это редко у меня получается(
По этому и пишу свои велосипеды)


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