|  | 		    
					
        
         
          
         
	
          | |  | Mere hjælp til clipping funktion Fra : Jørgen Farum Jensen
 | 
 Dato :  09-10-09 12:11
 | 
 |  | 
 
            Tak for tidligere svar, det hjalp.
 Nu er jeg gået i stå igen:
 function wipeRight(objekt,kant){
    if (clipTal(objekt,kant)<width) {
      clipMed(objekt,0,0,0,5)
      setTimeout("wipeRight()",30)
    }
 }
 skal beskære 'objekt' fra venstre
 med 5 pixel per gang. Funktionen
 standser naturligvis ved setTimeout.
 I grunden er det et meget generelt
 spørgsmål: Hvordan er det lige man
 gentager en funktion uden at overføre
 argumenterne?
http://webdesign101.dk/www/javascript/clipping3a.html (Øverste knap)
 -- 
 Med venlig hilsen
 Jørgen Farum Jensen
 Håndbog i webdesign: http://webdesign101.dk/wwwbog/udgave2/ Webdesign med stylesheets: http://webdesign101.dk/cssbog/ ..
            
             |  |  | 
  Birger Sørensen (09-10-2009) 
 
	
          | |  | Kommentar Fra : Birger Sørensen
 | 
 Dato :  09-10-09 12:46
 | 
 |  | 
 
            Jørgen Farum Jensen kom med følgende:
 > Tak for tidligere svar, det hjalp.
 > Nu er jeg gået i stå igen:
 >
 > function wipeRight(objekt,kant){
 >    if (clipTal(objekt,kant)<width) {
 >      clipMed(objekt,0,0,0,5)
 >      setTimeout("wipeRight()",30)
 >    }
 > }
 > skal beskære 'objekt' fra venstre
 > med 5 pixel per gang. Funktionen
 > standser naturligvis ved setTimeout.
 >
 > I grunden er det et meget generelt
 > spørgsmål: Hvordan er det lige man
 > gentager en funktion uden at overføre
 > argumenterne?
 >
 > http://webdesign101.dk/www/javascript/clipping3a.html > (Øverste knap)
 setTimeout("wipeRight('"+objekt+"','"+kant+"')",30);
 Får det til at virke i FF.
 Birger
 -- 
http://varmeretter.dk  - billig, sund og hurtig mad
http://bbsorensen.dk |  |  | 
  Birger Sørensen (09-10-2009) 
 
	
          | |  | Kommentar Fra : Birger Sørensen
 | 
 Dato :  09-10-09 13:07
 | 
 |  | 
 
            Birger Sørensen skrev:
 > Jørgen Farum Jensen kom med følgende:
 >> Tak for tidligere svar, det hjalp.
 >> Nu er jeg gået i stå igen:
 >>
 >> function wipeRight(objekt,kant){
 >>    if (clipTal(objekt,kant)<width) {
 >>      clipMed(objekt,0,0,0,5)
 >>      setTimeout("wipeRight()",30)
 >>    }
 >> }
 >> skal beskære 'objekt' fra venstre
 >> med 5 pixel per gang. Funktionen
 >> standser naturligvis ved setTimeout.
 >>
 >> I grunden er det et meget generelt
 >> spørgsmål: Hvordan er det lige man
 >> gentager en funktion uden at overføre
 >> argumenterne?
 >>
 >> http://webdesign101.dk/www/javascript/clipping3a.html >> (Øverste knap)
 >
 > setTimeout("wipeRight('"+objekt+"','"+kant+"')",30);
 >
 > Får det til at virke i FF.
 >
 > Birger
 -- 
http://varmeretter.dk  - billig, sund og hurtig mad
http://bbsorensen.dk |  |  | 
   Birger Sørensen (09-10-2009) 
 
	
          | |  | Kommentar Fra : Birger Sørensen
 | 
 Dato :  09-10-09 13:28
 | 
 |  | 
 
            Birger Sørensen skrev:
 > Birger Sørensen skrev:
 >> Jørgen Farum Jensen kom med følgende:
 >>> Tak for tidligere svar, det hjalp.
 >>> Nu er jeg gået i stå igen:
 >>>
 >>> function wipeRight(objekt,kant){
 >>>    if (clipTal(objekt,kant)<width) {
 >>>      clipMed(objekt,0,0,0,5)
 >>>      setTimeout("wipeRight()",30)
 >>>    }
 >>> }
 >>> skal beskære 'objekt' fra venstre
 >>> med 5 pixel per gang. Funktionen
 >>> standser naturligvis ved setTimeout.
 >>>
 >>> I grunden er det et meget generelt
 >>> spørgsmål: Hvordan er det lige man
 >>> gentager en funktion uden at overføre
 >>> argumenterne?
 >>>
 >>> http://webdesign101.dk/www/javascript/clipping3a.html >>> (Øverste knap)
 >>
 >> setTimeout("wipeRight('"+objekt+"','"+kant+"')",30);
 >>
 >> Får det til at virke i FF.
 >>
 >> Birger
 Ville vist have skrevet lidt forklaring, og et svar på det egentlig 
 spørgsmål..
 Den metode du bruger i setTimeout, vil bruge eval() funktionen til at 
 finde ud af hvilken funktion der skal kaldes, og man kan der overføre 
 parametre.
 Hvis du gør som du har gjort i de øvrige tre, kan du undgå dette, ved 
 at kalde
 setTimeout( wipeRight, 30);
 altså uden strenge, og uden paranteserne. Der kan så ikke overføres 
 variable - hvis det er nødvendigt kan de oprettes som globale variable, 
 som den kaldte funtion jo vil have adgang til.
 At ungå eval() anbefales - især hvor der kan være mulighed for brugere 
 at indtaste data, der vil kunne blive udført som kommandoer.
 I FF, skal du kunne bruge
 setTimeout( wipeRight, 30, objekt, kant);
 for at overføre parametre. Det virker ikke i IE.
https://developer.mozilla.org/en/DOM/window.setTimeout Birger
 -- 
http://varmeretter.dk  - billig, sund og hurtig mad
http://bbsorensen.dk |  |  | 
  Lasse Reichstein Nie~ (10-10-2009) 
 
	
          | |  | Kommentar Fra : Lasse Reichstein Nie~
 | 
 Dato :  10-10-09 12:37
 | 
 |  | 
 
            =?ISO-8859-15?Q?Birger_S=F8rensen?= <sdc@bbsorensen.com> writes:
 >
 > setTimeout("wipeRight('"+objekt+"','"+kant+"')",30);
 >
 > Får det til at virke i FF.
 Alternativt, uden at bruge strenge som argument til setTimeout:
  setTimeout(function(){ wipeRight(objekt, kant); }, 30);
 Det er skrøbeligt at lave sin kildetekst i strenge. Der er mange
 værdier der ikke nemt kan laves om til en streng, fx objekter.
 Hvis man kan lave en funktion i stedet, så kan man overføre alle
 typer værdier uden at lave dem om til strenge først, og derefter
 tilbage igen.
 En helt anden tilgangsvinkel er at bruge setInterval:
  function wipeRight(objekt, kant) {
    var interval_id;
    function action() {
      if (clipTal(objekt, kant) < width) {  // hvor er width defineret?
        clipMed(objekt, 0, 0, 0, 5);
      } else {
        clearInterval(interval_id);
      }
    }
    interval_id = setInterval(action, 30);
  }
 Her slipper man for at lave en ny funktion hver gang.
 Hvis man ikke kan vente 30 ms på det første skridt, så kan man kalde
 action manuelt i slutningen af wipeRight.
 /L
 -- 
 Lasse Reichstein Holst Nielsen
  DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>   'Faith without judgement merely degrades the spirit divine.'
            
             |  |  | 
   Jørgen Farum Jensen (11-10-2009) 
 
	
          | |  | Kommentar Fra : Jørgen Farum Jensen
 | 
 Dato :  11-10-09 15:47
 | 
 |  | 
 
            Lasse Reichstein Nielsen skrev:
 > =?ISO-8859-15?Q?Birger_S=F8rensen?= <sdc@bbsorensen.com> writes:
 > 
 >> setTimeout("wipeRight('"+objekt+"','"+kant+"')",30);
 >>
 >> Får det til at virke i FF.
 > 
 > Alternativt, uden at bruge strenge som argument til setTimeout:
 >  setTimeout(function(){ wipeRight(objekt, kant); }, 30);
 Ja, hvis man er fortrolig med anonyme funktioner. Jeg
 har læst noget om det uden helt at forstå det. Tak for
 en konkrete guide.
 > En helt anden tilgangsvinkel er at bruge setInterval:
 > 
 >  function wipeRight(objekt, kant) {
 >    var interval_id;
 >    function action() {
 >      if (clipTal(objekt, kant) < width) {  // hvor er width defineret?
 >        clipMed(objekt, 0, 0, 0, 5);
 >      } else {
 >        clearInterval(interval_id);
 >      }
 >    }
 >    interval_id = setInterval(action, 30);
 >  }
 Smart. setInterval er selvfølgelig rigtigere i denne
 sammenhæng.
 width er defineret som en global variabel.
 Funktionen ser nu således ud:
 var width=275;
 var height=184;
 var speed=30;
   function wipeRight(objekt, kant, pixel) {
     var interval_id;
     function action() {
       if (clipTal(objekt, kant) < width) {
         clipMed(objekt, 0, 0, 0, pixel);
       } else {
         clearInterval(interval_id);
       }
     }
     interval_id = setInterval(action, speed);
   }
 Ideen er at ende med en universalfunktion,
 der kan beskære fra en vilkårlig kant. Så nu er
 jeg strandet på problemet med at passere en negativ
 talværdi for den variable pixel.
 -- 
 Med venlig hilsen
 Jørgen Farum Jensen
 Håndbog i webdesign: http://webdesign101.dk/wwwbog/udgave2/ Webdesign med stylesheets: http://webdesign101.dk/cssbog/ ..
            
             |  |  | 
    Stig Johansen (12-10-2009) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  12-10-09 20:47
 | 
 |  | Jørgen Farum Jensen wrote:
 
 > Smart. setInterval er selvfølgelig rigtigere i denne
 > sammenhæng.
 
 Umiddelbart er det smartere, men jeg synes du skulle tage et kig på hvordan
 de har lavet zoom/animationen ovre på browsershots.org.
 
 Den kunstruktion gør, at det også virker på ældre maskiner, uden det ser
 stygt ud.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
 |  |