Toon posts:

Timing van loaden plaatje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi

Ik heb het volgende probleem namelijk het uitlezen van de lengte en breedte van een afbeelding. No probs so far, maar ik moet twee keer op een op de link klikken willen de afmetingen correct worden weergegeven. De eerste keer lijkt het alsof de afbeelding nog niet is geladen. Heb daarvoor een loopje gemaakt. Kan iemand aangeven wat hier fout aan is.

------------------------------------------------------------
prevImg = new Image();
prevImg.src = '../img/plaatje.jpg

//wait untill image is loaded completely to continue
do {
window.setTimeout("",500);
//self.setInterval("",500);
}
while( (!prevImg) && (!prevImg.complete) );
//self.setInterval ("");


iwidth = prevImg.width;
iheight = prevImg.height;
-------------------------------------------------------

Het lijkt wel of de 'prevImg.complete' het niet zo doet.
Als ik '(!prevImg)' weglaat blijftie namelijk in de loop hangen en dus ook Explorer.

Alvast bedankt.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Beter is om de readystate uit te vragen:
Stukje code dat ik veel gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Array of images to preload:

var Images = new Array();
Images[0] = 'scrolldown.gif';
Images[1] = 'scrolldown_pushed.gif';
Images[2] = 'scrollup.gif';
Images[3] = 'scrollup_pushed.gif';

var i = 0;
var finish = null;
var notfound = false;
var preload = new Image(0, 0);
preload.onerror = loaderror;

function PreloadImages() {

  if (i < Images.length) {

    preload = new Image;
    preload.src=Images[i];
    i++;
    finish = setInterval("finishLoad()",30);

  } else {

    // show page

  }

}

function loaderror() {

  notfound = true;

}

function finishLoad() {

  if (notfound || preload.readyState=='complete') {

    clearInterval(finish);
    finish = null;
    notfound = false;
    PreloadImages();

  }

}

Intentionally left blank


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op woensdag 23 januari 2002 07:32 schreef Fajlajo het volgende:
<knip>

//wait untill image is loaded completely to continue
do {
window.setTimeout("",500);
//self.setInterval("",500);
}
while( (!prevImg) && (!prevImg.complete) );
//self.setInterval ("");

<knip>
Wat je hier neerzet ziet er heel gevaarlijk uit. Als je hiermee wil bereiken dat binnen de loop telkens een halve seconde wordt gewacht dan moet ik je teleurstellen. De code raast gewoon door, er zal alleen een timer worden gezet.

Om in javascript de uitvoer van een script even te "pauzeren" moet je een iets andere constructie verzinnen.
in semi-pseudo-code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var prevImg = new Image();
// ....

setTimeout("checkImg()", 500);

function checkImg()
{
  if (image_niet_klaar) setTimeout("checkImg()", 500);
  else ga_door();
}

function ga_door()
{
  iwidth = prevImg.width;
  // ....
}

Today's subliminal thought is:


Verwijderd

Topicstarter
Gevaarlijk !!... oeioei >:)

Neeh jah... ik ga het meteen proberen.

Bedankt iig!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op woensdag 23 januari 2002 10:26 schreef Fajlajo het volgende:
Gevaarlijk !!... oeioei >:)
tja, beetje rare woordkeuze :o.
ik bedoelde te zeggen dat het een veelgemaakte denkfout is.

Today's subliminal thought is:


Verwijderd

Topicstarter
Jah... ik snapteje 8-)

Maaruh... twerkt perfect hoor

tnx
Pagina: 1