Autor Zpráva
Peta
Profil *
Je mozne provest casovani bez udalosti?
Jako je treba v packalu DELAY.

Kdyz udelam
pis('x')
setTimeout('',600)
pis('o')
pak se mi napise 'x' a hned prepise 'o'. Ja bych potreboval, aby to pockalo a pak pokracovalo. Jde to? Pripadne, jestli je k tomu jiny prikaz, jaky? Hlavne, aby to bylo co nej kompatibilni.
Leo
Profil
Nejde, k cemu by to jako bylo? Leo
Marty
Profil
Zkoušel jsem to hledat na všemožnejch místech, ale opravdu to asi nepůjde.
Možná tak nadeklarovat funkci, která bude prázdná(nebude nic dělat) a tu přiřadit jako parametr.

Nejde, k cemu by to jako bylo?
V Pascalu se to používá, třeba když vypíšeš výsledek výpočtu a chceš chvíli počkat než program a okno s ním zavřeš, aby si uživatel stihl přečíst výsledek, nebo v nějakejch hrách. V JS to bude mít asi minimální využití.
Peta
Profil *
Marty (Leo) Presne, hry. Treba piskvorky. Nez smazu hru, chci chvilku pockat, aby mohl hrac postrehnout, kam hral PC. Pak hru presunu do maleho okenka vedle, aby si mohl pripadne prohlednout, kde PC vyhral.

Zkratka cekaci funkce.

Nejak presne nechapu, jak funguje to setTimeout.
V uvedenem prikladu
pis('x')
setTimeout('',600)
pis('o')
... se prepise 'x' na 'o' okamzite, kam se ztrati tedy ten radek se settimeout?

Prazdnou funkci jsem rovnez zkousel.
cekej() {}
pis('x')
setTimeout('cekej()',600)
pis('o')
... vysledek je stejny

V tech piskvorkach jsem to dal na presun do minipolicka z hlavni plochy.
setTimeout('presun()',600)
... jenze problem byl v tom, ze v dobe timeout slo klikat. Takze pokud hrac vyhral a byla volna pole, tak vyhraval vicekrat za sebou.

A jeste bych mel poddotaz, nekde jsem videl, jak hromadne pro skupinu inputu priradit stejnou udalost treba onfocus=blur()
Marty
Profil
se prepise 'x' na 'o' okamzite, kam se ztrati tedy ten radek se settimeout?
Ano, to se ta funkce přeskočí, vzhledem k tomu že nebyla správně nadefinována.

S tou prázdnou funkcí to taky nepůjde, teď jsem to zkoušel a nefacha.
Peta
Profil *
Hm, asi to uz chapu, JS nepripousti zastaveni stranky jen proto, ze bych mu to vnutil, protoze v pripade velmi velke hodnoty by se vlastne nic nedelo.
Cili to bere jen jako preruseni bezici soucasne s ostatnim a ja ho musim donutit rucne, aby nereagoval na nektere udalosti, dokud neskonci timeout...

Zkratka kdyz dam
setTimeout('udalost1j()',1000)
setTimeout('udalost1j()',2000)
setTimeout('udalost1j()',3000)
tak se to zachova asi stejne jako kdyz dam v packalu
delay(1000);udalost1j();
delay(1000);udalost1j();
delay(1000);udalost1j();
s tim, ze v packalu mezitim na nic nereaguje a JS bude nepatrne rychlejsi.

Ale stejne je to nezvyk, kdyz sem zvykly na uplne zablokovani delayem :)
Marty
Profil
Njn, jenže Pascal je něco jiného, než js(rozdíl asi 10 let).
Klikání myší by snad šlo zamezit js, ale to fakt hádám...
Leo
Profil
No ale na to nemusite zastavovat chod skriptu, na to se prave pouziva timeout. Rekneme ze otevrete okno, vypiste vysledek apod. / no tak v te chvili nastavite timeoutem fci, ktera to pak zavre, smaze atd. v cem je problem proboha, Leo
habendorf
Profil
Přesně jak píše Leo. Když vezmu ten tvůj pseudokód
pis('x')
setTimeout('',600)
pis('o')

tak prostě jednoduše:

function funkce() {pis('o')}

pis('x')
setTimeout("funkce()",600) , třeba. V čem je problém?
Peta
Profil *
Marty: Nejak mimo, ne? Cecko je taky stare 10 let a stale se v nem programuje, protoze nic prilis lepsiho nebylo napsano ani nabizeno.

Leo + habendorf:
Otevirat okno? Vynikajici vec. :) NE! Za co? :)
Nene, ja to poresil jinym zpusobem, jen jsem hned nepochopil, ze je to nesmysl blokovat skript, jak je na to udelana funce v packalu.
Marty: Mimochodem, myslim, ze C ma neco podobne a tvrdit, ze i C je zastarale, kdyz je na nem postaveny cely linux bych si uz nedovolil ani ja :) Navic packalovske programy mi dobre behaji i pod XP, ty zastaraly :) Kdyz si vemes html normy w3c a javaskripty, tak by ses tam docetl, ze ty jsou take nekdy z roku 97 mozna starsi.

var zzz=0;

function hrej()
{
if (zzz!=1)
{
pis(znacku) //znacka='o' nebo 'x' viz jine podminky
if (neco) {...;setTimeout('presun()',600)}
}
}

function presun()
{...
zzz=1;
}
Peta
Profil *
Jinak dekuji, vyresene. (a to zzz tam samo nekde menim taky na nulu, proste mi to jede, jak jsem chtel)
cert
Profil *
v Delphi je to
window.beep(400,300);
nebo
sleep(300);
Peta
Profil *
cert: Ja mel pocit, ze toto je seznam for o JS, ne?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0