Autor Zpráva
habendorf
Profil
Lze nějak korektně zapsat toto:

var obr1, obr2 = new Image();
obr1.src = "prvni.gif";
obr2.src = "druhy.gif";

Těch obrázků je jen pár, nechce se mi do toho motat pole a cykly. Ale nechce se mi zase vytvářet pokaždé novou instanci obrázku.
peta
Profil *
mno, jedine snad s tim polem

var nazvy="prvni.gif,druhy.gif".split(",");
var obr0,obr1 = new Image();
obr0.src=nazvy[0];
obr1.src=nazvy[1];

s tim cyklem, ktery nechces

var nazvy,i,obr;obr=[];
nazvy="prvni.gif,druhy.gif".split(",");
for(i=0;i<nazvy.length;i++) {obr[i]=new Image();obr[i].src=nazvy[i]}

Myslim, ze z toho vic nevytluces.
peta
Profil *
maximalne ocesat priponu
var nazvy,i,obr;obr=[];
nazvy="prvni,druhy".split(",");
for(i=0;i<nazvy.length;i++) {obr[i]=new Image();obr[i].src=nazvy[i]+".gif"}
Leo
Profil
"Těch obrázků je jen pár, nechce se mi do toho motat pole a cykly. Ale nechce se mi zase vytvářet pokaždé novou instanci obrázku."

Lenost docela boli co? Leo
kuba
Profil *
JavaScriptu moc nerozumim, ale nejde mi nasledujici - mam soubor mkbutton.php, pri jehoz volani zasilam promennou popis (tj. co ma byt na tlacitku napsano) a nazev (tj. nazev tlacitka, na jakou plochu / tlacitko se ma zapisovat). Jde mi o to, ze chci dopredu nacist obazek, aby ho pri onmouseover() / onmouseout() teprve nezacal stahovat. Vse mi funguje, pokud se odkazuji na existujici obrazek (tj. negenerovany v mkbutton.php), ale nejde mi to, pokud ho generuji pomoci mkbutton.php. Proc mi ho nechce dopredu natahnout do pameti???
v souboru JavaScriptu mam:

/* to by melo nacist obrazek do pameti */
obr1=new Image(); obr1.src="mkbutton.php?popis=SLUZBY&amp;nazev=pic/button2.png";

function zamen(nazev_obr, novy_obr)
{
document.images[nazev_obr].src=novy_obr;
return novy_obr;
}

v php resp html mam:
<a href="index.php"
onmouseover="zamen(\'obr1\', \'mkbutton.php?popis=SLUZBY&amp;nazev=pic/button2.png\');" onmouseout="zamen(\'obr1\', \'mkbutton.php?popis=SLUZBY&amp;nazev=pic/button1.png\');">
<img src="mkbutton.php?popis=SLUZBY&amp;nazev=pic/button1.png" name="obr1" border="0");">
</a>

co je tam blbe???
Leo
Profil
Podle ceho poznate, ze ho prohlizec nekesuje? Leo
Leo
Profil
Podle ceho poznate, ze ho prohlizec nekesuje? Leo
kuba
Profil *
no nevim, ale mam to na localhostu (na pevnym disku) a presto se mi tam objevi na zlomek sekundy ty hodiny (kdyz se neco nacita). je to hlavne videt, pokud prejizdim pres vic tlacitek sem a tam. pocitam, ze napr. z dialupu by to nebylo uplne nejlepsi... jak jsem psal, kdyz to zadavam "natvrdo" -> tj. negeneruju, ale nacitam existujici obrazky, je to o.k. urcite to taha do pameti az po spusteni onmouseover/out.
Leo
Profil
Zkuste se podivat na http hlavicky, treba ve FF pres Live HTTP Headers a zjistite, jestli se to stahuje znova nebo ne. Leo
habendorf
Profil
Leo: jestli můžeme zpět k tématu - Lenost docela boli co?

O to tady ani tak nejde. Když to ale udělám cyklem , tak výsledný kód bude delší než třeba pětkrát napsat
neco = new Image();
takže to radši pětkrát napíšu, ať je to kratší. Jen jsem chtěl vědět, jestli to nejde elegantněji. O lenosti to není.
Chamurappi
Profil
Reaguji na habendorfa:
Bez nové instance obrázku se zřejmě neobejdeš. Měl by fungovat i zápis (new Image()).src="prvni.gif"; -- tam nemáš problém s hledáním názvů pro proměnné.
Mayky
Profil *
Mam takovej problem s kešováním obrázku. V javascript sem začátečník ale delal sem v C,VB, Assembler a tak. Momentalne mne trápí že se mi nekešují oprázky. Pokaždé se to načítavá z netu. Nejlepe viď. www.modelsofww2.ic.cz .Když se klikne na odkaz nebo na granat na boku tak by se mnel menit prave na strance kde jsem. Bohužel ten obrazek nekešuje a nestiha se to mnenit. I do hlavičky html jsem dal <meta http-equiv="cache-control" content="cache">
<meta http-equiv="pragma" content="cache">

toto je ma funkce pro zmenu obrazku. vim že to neni nic moc ale ja se zlepším.

function zmenObj(idecko){
if (i==0){document.getElementById(idecko).src = "../mayky_files/pictures/granatn.jpg"; i=1;}
else {if (i==1){document.getElementById(idecko).src = "../mayky_files/pictures/granatn1.jpg"; i=2;}
else {document.getElementById(idecko).src = "../mayky_files/pictures/granatn2.jpg"; i=0;}
}
}

Pro Peťu: Seš fakt dobrej. Z tvý stranky se da fakt neco naučit...
peta
Profil *
Mayky
Naucit? Jen jsem tu posbiral odkazy a dal to do jedny stranky :)
Kdybych byl tak dobrej, tak uz davno nekde pracuji. Lidem to moc dobrej nepripada.
Dobra stranka je celkem krome jakpsatweb i tvorba-webu

Mayky kuba
Co se tyce kesovani, na to se vykaslat. Hover se dela pres posun obrazku. Spojis oba obrazky All-In-1 a pak pouzijes v CSS background-position. Je to tu nepsany u teto vlastnosti, pripadne odkaz z hlavni stranky na "vylepsene odkazy"
A pak se pouziva a:hover {}

Mayky
Pokud chces vylepsit ten script, tak zacni psat rozumne a usporne:

function objGet(x)
{return document.getElementById}

function zmenObj(x)
{var a=["","1","2"];
objGet(x).src="../mayky_files/pictures/granatn"+a[i]+".jpg";
i=(i<3)?i+1:0;
}

Kde v tom samozrejme nemas zadny preload, tak se nediv, ze se obrazky natahuji postupne. Viz prvni zprava tohoto fora, to je preload.

kuba
Logicky mi prijde ten scrip nasmyslne, ani by to nemelo fungovat, takze se to chova spravne, zadny preload.
Pokud obrazky vybiras z nejakeho mista, pouzij primy link, ne PHP. Pokud je generujes, nejdriv si je vygeneruj, pak pouzji primy link na ne (/images/ahoj.jpg)
<? include generuj_obrazky.php ?>
<script>
/*preload*/
obr1=new Image(); obr1.src="/images/ahoj.jpg";
</script>

Nevidim vsak ucel v tom, vygenerovat obrazek, dat jej jako preload a vzapeti ho dat hned tlacitku.

S tim onmouse ti to nikdy samo fungovat nebude, jak to mas.
Pokud mas adresu obrazku generovanou, vlozis si script do stranky a pouzijes pak hezky promenne:
onmouseover=<? $obrazek1 ?>
(das tam proste jiz hotovou adresu)
peta
Profil *
habendorf
Ten cyklus, to mas pravdu. Neslo by to vlozit jako externi JS? Ale to taky zpomaluje.
V tom pripade mas pro 2-3 i 6 obrazku to nejlepsi reseni (muj nazor). Mozna bych pouzil to pole, abys mel nazvy pohromade.
habendorf
Profil
Chamurappi: díky, zdá se ža takhle to funguje a zápis bude (pro daný počet obrázků) nejkratší

Leo: ještě k té lenosti - věř mi, že párkrát zkopírovat jeden řádek je méně práce, než se ptát zde v diskuzi, ale chtěl jsem to udělat co nejlépe a něco se naučit
habendorf
Profil
peta Neslo by to vlozit jako externi JS?
To mám, ale to nijak nesouvisí s tím, jak zapsat ty instance.
Leo
Profil
"O to tady ani tak nejde. Když to ale udělám cyklem , tak výsledný kód bude delší než třeba pětkrát napsat
neco = new Image(); takže to radši pětkrát napíšu, ať je to kratší"

Ono jde taky treba o rozsiritelnost, pri peti obrazcich vyhoda byt vide nemusi, ale pri desiti uz treba jo, a zatimco kod cyklu zustane stejne dlouhy, tak vypisovani radek po radku bude delsi a delsi:

var pocet = 20;
var obr = new Array();
for (var i=1;i<=pocet;i++) {
obr[i] = new Image();
obr[i].src = "foto"+i+".jpg";
}
habendorf
Profil
Leo: To je jasný. Mě se ty obrázky jmenujou různě (včetně koncovek), ale to by nebyl problém.

var jmena = new Array("neco.gif", "neco-jineho.jpg");
a pak
obr[i].src = jmena[i];

Asi jsem se na začátku blbě zeptal, šlo mi jen a jenom o to, jestli lze nějak syntakticky správně napsat zápis, který by měl tento význam: var obr1, obr2, ... = new Image();

Úplně stačí odpověď jde/nejde. Asi nejde.
Leo
Profil
Podle me ne, protoze je to objekt a tak je prirazeni odkazem, takze ve vsech by pak byl tentym obrazek.
habendorf
Profil
Leo: Díky, to jsem chtěl vědět. Zavíráme.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0