Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mere hjælp til clipping funktion

0 views
Skip to first unread message

Jørgen Farum Jensen

unread,
Oct 9, 2009, 7:10:57 AM10/9/09
to
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

unread,
Oct 9, 2009, 7:45:52 AM10/9/09
to
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

unread,
Oct 9, 2009, 8:06:35 AM10/9/09
to
Birger Sᅵrensen skrev:

Birger Sørensen

unread,
Oct 9, 2009, 8:27:37 AM10/9/09
to
Birger Sᅵrensen skrev:

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

Lasse Reichstein Nielsen

unread,
Oct 10, 2009, 7:36:32 AM10/10/09
to
=?ISO-8859-15?Q?Birger_S=F8rensen?= <s...@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

unread,
Oct 11, 2009, 10:47:09 AM10/11/09
to
Lasse Reichstein Nielsen skrev:

> =?ISO-8859-15?Q?Birger_S=F8rensen?= <s...@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.

Stig Johansen

unread,
Oct 12, 2009, 3:46:36 PM10/12/09
to
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

0 new messages