Toon posts:

[JS] Dynamisch plaatjes maken & preloaden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil als men ergens klikt dat er een object zichtbaar wordt. In dat object worden - op het moment dat iemand klikt - dynamisch een paar plaatjes gemaakt.
Dat gebeurt op deze manier:

code:
1
2
3
4
5
6
var im = new Image();
im.src ="blaat";

function byKlik() {
object.appendChild(im.cloneNode(false));
}


Dit werkt correct (I know alleen in IE), maar wat nu gebeurt is dat hij het plaatje gaat laden op het moment dat hij zichtbaar zou moeten worden. Dat wil ik niet, bovendien als je meerdere objecten hebt waarmee je dit doet binnen een pagina met hetzelfde plaatje(dus var im), dan moet hij nog steeds laden.

Hoe kan ik dat voorkomen?

ik heb al geprobeert:
code:
1
2
3
4
5
6
7
8
9
object.innerHTML = '[img]"blaat">';

object.innerHTML[/img]';
object.children[0].src = im.src;

object.appendChild(document.createElement('[img]"blaat"[/img]'));

object.appendChild(document.createElement("img"));
object.children[0].src = im.src;

[ Voor 0% gewijzigd door Verwijderd op 21-09-2002 16:18 . Reden: foutje in de titel hoe kan ik die wijzigen? ]


Verwijderd

je kunt hem alvast preloaden in een divje en die div onzichtbaar laden, op deze manier staat het bestand al in de temporary internet files, en als je dan hetzelfde bestand ergens anders laat opduiken issie er gelijk

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 13:53

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Een img-preloader :)

code:
1
2
3
4
5
6
7
myImg = new Array('img1.gif', 'img2.gif', 'img3.gif');

for(var i=0; i<myImg.length; i++){
     imgName = 'myImg_'+i;
     imgName = new Image();
     imgName.src = myImg[i];
}


Zoiets zou dat dan moeten worden, en dit dan in een functie aanroepen bij de onload, dan slaat hij ze inderdaad, zoals jasper zegt, op in de temp.

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Verwijderd

Ik gebruik altijd de volgende code om plaatjes te preloaden:

---
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
---
body onLoad="MM_preloadImages('image/image.gif')
---

suc6

Verwijderd

even vraagje wat hier eigenlijk ook over gaat....

kun je als je een plaatje in een array element hebt gestopt ook checken of het plaatje geladen is? dus eigenlijk de onload event?

Verwijderd

Topicstarter
woeitje, dat kan met .complete() op het plaatje object geloof ik...

Dat preloaden van images doe ik dus al volgens deze code:
code:
1
2
var im = new Image();
im.src ="blaat";


maar zoals ik al zei werkt dat in dit geval dus niet. Als ik dus die image clone dan gaat hij hem toch laden...

Verwijderd

Topicstarter
Wat ook zo is, is dat als het plaatje eenmaal bestaat, en ik wijzig dan de source, dan laad hij hem niet opnieuw, maar voor de eerste keer lost dat niets op...

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Verwijderd schreef op 22 september 2002 @ 13:58:
Ik gebruik altijd de volgende code om plaatjes te preloaden:

---
function MM_shit() { //v3.0
...
}
---
body onLoad="MM_shit('image/image.gif')
---

suc6


Laat de Macromedia functies even achterwege ;) Die zijn nou niet echt het goede voorbeeld van efficiente JS-coding...

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:07

André

Analytics dude

Verwijderd schreef op 23 september 2002 @ 12:13:
woeitje, dat kan met .complete() op het plaatje object geloof ik...

Dat preloaden van images doe ik dus al volgens deze code:
code:
1
2
var im = new Image();
im.src ="blaat";


maar zoals ik al zei werkt dat in dit geval dus niet. Als ik dus die image clone dan gaat hij hem toch laden...
Kan je misschien zo klonen:
code:
1
2
3
4
5
var im = new Image();
im.src ="blaat";

var em = new Image();
em = im;

Verwijderd

Yogho schreef op 23 september 2002 @ 12:46:
[...]

Kan je misschien zo klonen:
code:
1
2
3
4
5
var im = new Image();
im.src ="blaat";

var em = new Image();
em = im;

Nee, want het 2e object wordt dan opgeschept door de garbage collector, omdat er geen referenties meet naar zijn, en beide vars verwijzen naar hetzelfde object.

En een object kan maar 1 parentNode hebben (of geen). Het laatste voorbeeld dat de topicstarter zelf geeft zou moeten werken, evenals zijn eerste voorbeeld.
Pagina: 1