Autor Zpráva
Kryvosa
Profil *
Ahoj lidi, mám jednoduchý problém: Pořebuji jakousi animaci. Vím, že requestAnimationFrame() je na animace nejlepší, ale přeskakuje v zájmu plynulosti některá políčka, díky čemuž se má animace následně rozpadá. Proto mám jednoduchou funkci:
function animation(Y)
{
  if(Y==31)Y=0;else Y++;
  setTimeout(function(){animation(Y)},0);  

  //nějaké vykreslování.....
}
A potřeboval bych dovnitř vpravit ještě jednu funkci, která by byla anonymní, ale sama sebe by volala, a zařizovala souřadnice X...
_es
Profil
Nie je ti dosť rozumieť, na čo sa pýtaš. Ako by mala volať „samu seba“. Veď aj tá vnorená funkcia volá „samu seba“, tak daj to „zařizováni X“ do nej.

setTimeout(function(){animation(Y)},0);
Čo je to za divnú animáciu, ktorá na rôznych strojoch pobeží rôzne rýchlo? To je skoro to isté, ako keby si tam mal len animation(Y);. Vyskúšaj si to na niečom oveľa menej výkonnejšom, aj v rôznych prehliadačoch.
Joker
Profil
Kryvosa:
Udělejte z anonymní funkce neanonymní a může se volat jak je libo.

Smysl volání setTimeout s nulovým timeoutem taky moc nechápu.
Nejenže rychlost bude závislá na počítači a na prohlížeči, ale i jednotlivá volání funkce animation budou mít mezi sebou různé rozestupy.

Navíc při uvedeném pořadí se může stát, že se další volání začne vykreslovat ještě během vykreslování předchozího volání.
Kryvosa
Profil *
Mám totiž mapu řekněme 10x10 políček, a každé se animuje zvlášť, a tento kamarádský prasácký program je všechny projíždí a animuje...
Jinak, už jsem to vyřešil bez zbytečných animací...
Stejně mne ale zajímá, jestli můžu nějak zavolat anonymní funkci uvnitř té funkce...
_es
Profil
Kryvosa:
Stejně mne ale zajímá, jestli můžu nějak zavolat anonymní funkci uvnitř té funkce...
Stačí dať tej anonymnej funkcii názov: jQuery AJAX - zabránění odeslání formuláře

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0