Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запуск одной функции в 2х экземплярах одновременно (https://javascript.ru/forum/misc/41661-zapusk-odnojj-funkcii-v-2kh-ehkzemplyarakh-odnovremenno.html)

Fronnt 24.09.2013 08:35

Запуск одной функции в 2х экземплярах одновременно
 
У меня есть функция анимации, которая в зависимости от переданных значений в аргументы может творить с блоком что угодно (читай разные вещи). Она похожа на jQuery .animate() по исполнению, но не синтаксису. Что я хочу? Для начала обрисую вид (не целиком, а просто логику).

function anim(el, prop, val, speed){
//something
}
document.getElementById("button").onclick = function(){
//block left:200px
anim('block','left','200px',[10,100]);
//block opacity:0
anim('block','opacity','0',"fast");
}


как вы поняли, функция смещает блок влево на 200 пикселей и одновременно пытается "затуманить" блок, чтобы он плавно пропал (да, я знаю про css3, но этот пример чисто для наглядности). Как мне обойти эти очереди чтобы работа был асинхронной? (если бы очереди - их тут вообще нет, выполняется последняя). Как запустить эту функцию для отрисовки разных вещей? Как это сделать красиво? Может можно как-то создать виртуальную копию функции для обхода?
Прошу меня извинить если я что-то оформил неправильно - пишу с телефона. Надеюсь вопрос понятен.
Вот кстати схожий вопрос, но по jQuery и на stackoverflow: http://stackoverflow.com/questions/1...simultaneously

Fronnt 24.09.2013 10:14

Приду домой, напишу .paralell() для основной ф-ции (копирует текущую, но выполняет как левую), но думаю это дрянное решение.

Arramis 24.09.2013 12:36

Цитата:

Сообщение от Fronnt (Сообщение 273390)
Надеюсь вопрос понятен

вопрос не понятен.
Цитата:

Сообщение от Fronnt (Сообщение 273390)
функция смещает блок влево на 200 пикселей и одновременно пытается "затуманить" блок, чтобы он плавно пропал

это делается легко ...

например так:

http://learn.javascript.ru/play/0k4Doc

и не нужно никаких jquery плагинов.

а вообще почитайть про анимацию в js можно вот тут

Fronnt 24.09.2013 14:26

Facepalm. Не занимайте чужое время, пожалуйста - я не использую jQuery - вы видите набросок моей функции. Не знаю зачем вы ответили не вникнув в вопрос даже самую малость.

А касаемо синхронного выполнения - нужно вызывать либо коллбеками или через setTimeout, то есть хаками (для тех кто столкнется с подобной проблемой). Но на самом деле проблема у меня не в синхронном выполнении, а передаче аргументов. Буду разбираться в самих функциях, хотя в console.log тишь да гладь

Fronnt 24.09.2013 15:12

Итак... Я нашел ошибку, ту самую, которая отняла у меня достаточно времени. Вы могли бы подумать что это косяк в логике функций, но еж твою! Я забыл var перед некоторыми функциями. Как такое возможно, я все облазил до этого. Не наступайте на мои грабли, ребята.

Arramis 24.09.2013 15:17

Цитата:

Сообщение от Fronnt (Сообщение 273425)
Не знаю зачем вы ответили не вникнув в вопрос даже самую малость.

вы задали много не связных вопросов поэтому и вникать было некуда - научитесь излагать мысли максимально лаконично и по существу.
Тогда и ответ будет такой же, по существу.
Цитата:

Сообщение от Fronnt (Сообщение 273425)
Но на самом деле проблема у меня не в синхронном выполнении, а передаче аргументов.

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

Arramis 24.09.2013 15:36

Цитата:

Сообщение от Fronnt (Сообщение 273436)
Итак... Я нашел ошибку, ту самую, которая отняла у меня достаточно времени. Вы могли бы подумать что это косяк в логике функций, но еж твою! Я забыл var перед некоторыми функциями. Как такое возможно, я все облазил до этого. Не наступайте на мои грабли, ребята.

какие грабли ?? о чем вы вообще ?? какой var ?? не забывайте что здесь вы разместили 3 - ех строчный псевдокод вашего реального примера.


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