Autor Zpráva
jako
Profil *
Prosím Vás o radu jak udelat efekt pomalého vykreslování obrazku v javascriptu.
Proste aby měl nejdřív velikost 0,0 pak 1,1 atd az po plný obrázek.
Skoušel jsem to různe ale stále my to kreslí rýchle.Když dám prázdny cyklus tak to zpomalí script ale vykreslení je stejne rýchle na konci.Diky za pomoc.

<body style="background-color:#333333;">

    <div><img id="obr"     /></div>
    <script type="text/javascript">
 
 var el=document.getElementById("obr");
 el.setAttribute("src","obr/skouska-rezu_01.gif");
 el.style.width="0px";
 el.style.height="0px";
 alert (el.getAttribute("src"));
 
 for (var s=0;s<500;s++) {
	 for (var a=0;a<1000*s;a++) {
	 
	 var e=a;
 }
	 el.style.width=s+"px";
	 el.style.height=s+"px";
	
 
 
 }
 alert ("konec skriptu");

</script>
</body>
Marek88
Profil
Musíš použít časování.
Chamurappi
Profil
Reaguji na jaka:
Řádkům 15 a 16 trochu nerozumím… (Edit: Vlastně i řádku 13, nějak jsem se zamotal.)
Asi hledáš časované události, tedy setTimeout či setInterval.

el.setAttribute("src","obr/skouska-rezu_01.gif");
Proč ne el.src="obr/skouska-rezu_01.gif"?
jako
Profil *
Marek88:
Tak nevím jestli jsem to použil správne ale nejak to nefunguje.

<body style="background-color:#333333;">

    <div><img id="obr"     /></div>
    <script type="text/javascript">
 
 var el=document.getElementById("obr");
 el.setAttribute("src","obr/skouska-rezu_01.gif");
 el.style.width="0px";
 el.style.height="0px";
 alert (el.getAttribute("src"));
 
 for (var s=0;s<500;s++) {
	 var cas = window.setTimeout("zobrazeni",1000);
     function zobrazeni(s) {
		 
	     el.style.width=s+"px";
	     el.style.height=s+"px";
	 }
 
 
 }
 alert ("konec skriptu");

</script>
</body>
jako
Profil *
Chamurappi:
nevím proč ne...proste jsem jse to tak naučil.Takova syntakce byla v knížke.
Chamurappi
Profil
Reaguji na jaka:
for (var s=0;s<500;s++) {
Obalit tělo cyklu do lexikálního uzávěru.

window.setTimeout("zobrazeni",1000);
Smazat uvozovky.

Takova syntakce byla v knížke.
Spálit.
jako
Profil *
Chamurappi:
5ádek 15 a 16 byla snaha zpomalit script ale nejak to nepomohlo.Jinak to nemá nijaký význam.
jako
Profil *
Chamurappi:
Tak tohle sliším poprvé a vůbec netuším jak to funguje.Nemůžeš my nejak s tým pomoct?
Witiko
Profil
jako:
Nemůžeš my ...
... sliším poprvé
Nemůžeš my nejak s tým pomoct?
Beze všeho: Internetová jazyková příručka. Teď k té animaci: funkce fadeIn a fadeOut v tomto tématu tvoří kostru pro prakticky libovolnou animaci v javascriptu, pokud člověk nepožaduje easing funkci.
jako
Profil *
Witiko:
Původne jsem už reagovat nechtel ale musím.

1.Teď nevím jestli jsem na stránkách o pravopisu nebo o programovaní.

2.Ať zkouším různe varianty pořád my to vykresluje najednou.Jestli je tu nekdo kdo my dokáže vysvětlit proč tomu tak je diky.
Zbytečné komentaře k pravopisu vynechte.

Logicky ten kód by měl vykreslovat postupne obrázek ale místo toho zastaví script podle času setTimeout a pak to dokreslí rychle.
Nechci kód spíše návod proč to delá a jakým postupem to odstranit.Jquery zatím neovládam.Diky ješte jednou
Witiko
Profil
jako:
Ať zkouším různe varianty pořád my to vykresluje najednou.
Asi nezkoušíte ty varianty, ke kterým jsem Vám dal odkaz? Funkce fadeIn a fadeOut.
_es
Profil
jako:
Stači meniť len vlastnosť height obrázka, podobne ako v tomto skripte.
peta
Profil
Jak tu nemate petu, tak je to naprosto zoufale, to razeni, koukam :)

http://peter-mlich.wz.cz/web/js/prjpw/animace_simple.html
V podstate muzes pouzit totez s css overflow. Nebo misto left menit clip, height,...
Script, ktery tam mas napsany nemuze fungovat, protoze settimeout je casova funkce, ktera bezi zcela mimo bezny program.

Ale treba by to fungovalo takto, netestovano! Cili, ze si predem naspoustis 500 casovacu odstupnovanych casem.
for (var s=0;s<500;s++) {
     window.setTimeout("zobrazeni("+s+")",1000*s); //zmena1
} //zmena2
     function zobrazeni(s) {
         
         el.style.width=s+"px";
         el.style.height=s+"px";
     }
_es
Profil
peta:
Script, ktery tam mas napsany nemuze fungovat, protoze settimeout je casova funkce, ktera bezi zcela mimo bezny program.
To je zase čo za petovinu?

window.setTimeout("zobrazeni("+s+")",1000*s);
Časté potíže, zajímavosti a poučné debaty » Nepoužívejte eval, ani jeho obdoby

jako:
<div><img id="obr" height=0></div>
<script>
var el = document.getElementById("obr");
el.onload = function(){
  var j = 1;
  for(var i = 1; i <= 500; i++)setTimeout(f, i*1000);
  function f(){el.height = j++};
};
el.src = "obr/skouska-rezu_01.gif";
</script>
jako
Profil *
_es:
Dekuji za pomoc.Ješte pro oveření jestli jsem to spravne pochopil:

- v mém scriptu to nemohlo fungovat protože ta funkce volaná setTimeout neznala proměnnú v cykle.
- čas pozastavení scriptu musí se pořád navyšovat. i*1000

Pochopil jsem to správne?
_es
Profil
jako:
- v mém scriptu to nemohlo fungovat protože ta funkce volaná setTimeout neznala proměnnú v cykle.
Premennú „poznala“, no tá premenná je len jedna, teda po skončení cyklu mala hodnotu 500 a s tou hodnotou bola tá funkcia potom 500 krát volaná.

- čas pozastavení scriptu musí se pořád navyšovat. i*1000
To nie je „čas pozastavenia skriptu“, ale čas, za ktorý je funkcia v argumente funkcie setTimeout zavolaná - alternatívou je použitie funkcie setInterval, podobne ako v odkaze v [#12].
jako
Profil *
_es:
Tak to jedno vykresleni by my fungovalo.Ted skouším obrázek rozdelit na časti a skusit každou část vykreslit po dokončení ty předeslí.Ale vůbec to nejde.pomůžeš my ješte?
Vůbec to nechápu proč to nefunguje,když dám před ten kod jen cyklus a podle hodnoty cyklu volám časti obr podle id.
_es
Profil
jako:
Znova: Vo volaní setTimeOut zadávaš čas, za ktorý bude funkcia volaná, teda ak chceš zobrazovať obrázky postupne, tak musíš v cykle priradiť také časy, aby sa obrázky zobrazovali postupne. Na čo slúži pre obrázok udalosť onload si snáď došiel aj sám, teda najlepšie bude začať zobrazovať obrázky, až vtedy, keď budú všetky načítané.

Vůbec to nechápu proč to nefunguje
To netuším ani ja, nie som jasnovidec, aby som naisto vytušil, čo všetko robíš zle.

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