Avatar billede rthuls Nybegynder
02. oktober 2003 - 23:52 Der er 8 kommentarer og
1 løsning

funktion til kø af funktioner

Under den kryptiske titel gemmer sig følgende spørgsmål:

Kan man stille funktioner der skal afvikles i en 'kø', således at den næste funktion i køen først afvikles når den foregående funktion er færdig?

Eksempel:

trekant.slideTo(0, 189);
kasse.resizeAndSlideTo(500, 350, 250, 5);
cirkel.slideTo(152, 125);

kasse.resizeAndSlideTo skal først køres når trekant.slideTo er færdig.
cirkel.slideTo skal først køres når kasse.resizeAndSlideTo er færdig.
Avatar billede barklund Nybegynder
03. oktober 2003 - 00:52 #1
Ja, det hedder callback eller event-model. Er disse termer helt fremmede for dig, så vil jeg lade være med at rode for meget med det, men det handler om at kalde en generel funktion når "man" er færdig med sin opgave som så sørger for at denne næste funktion går i gang. Der er ikke nogen "indbygget" måde at gøre det på.
Avatar billede rthuls Nybegynder
03. oktober 2003 - 09:10 #2
Det er lige det jeg skal bruge!
Jeg har en del actionscript erfaring, så jeg håber da, at jeg kan finde ud af det :-)
Kan du komme med et eksempel på hvordan det kan gøres?
Avatar billede barklund Nybegynder
03. oktober 2003 - 10:36 #3
Uha, det kræver lidt omtanke at strukturere... Og det har jeg desværre ikke tid til på denne side af weekenden :/

Men jeg skal nok vende tilbage mandag :)
Avatar billede rthuls Nybegynder
06. oktober 2003 - 20:09 #4
Hej igen Barklund. Hvordan ser det ud? Kan det lade sig gøre? Hvis det er nødvendigt hæver jeg gerne pointantalet.
Avatar billede barklund Nybegynder
07. oktober 2003 - 10:26 #5
Tja, problemet ligger lidt i, hvorleder det skal struktureres.

Men lad os lave et globalt objekt, FunctionOrganizer. Så skal du add'e på det og til sidst i alle funktioner kalde den næste:

var f = _global.FunctionOrganizer = new Object();
f.$_func = new Array();
f.addMethod = function(obj, func, parms) {
    this.$_func.push({o: obj, f: func, p: parms});
}
f.nextMethod = function() {
    if (this.$_func.length > 0) {
        var j = this.$_func.shift();
        j.f.apply(j.o, j.p);
    }
}
FunctionOrganizer.addMethod(trekant, trekant.slideTo, [0,189]);
FunctionOrganizer.addMethod(firkant, firkant.resizeAndSlideTo, [500,350,250,5]);
FunctionOrganizer.addMethod(cirkel, cirkel.slideTo, [152,125]);
FunctionOrganizer.nextMethod();

/Barklund
Avatar billede rthuls Nybegynder
07. oktober 2003 - 14:56 #6
Det ser rigtigt godt ud Barklund! Jeg tester det lige og vender tilbage, men umidelbart tror jeg at det er perfekt.
Avatar billede rthuls Nybegynder
07. oktober 2003 - 16:25 #7
Jep, det virker bare som det skal. Super arbejde! Du må gerne smide et svar.
Avatar billede barklund Nybegynder
20. oktober 2003 - 22:09 #8
Og et svar her :)
Avatar billede rthuls Nybegynder
20. oktober 2003 - 22:16 #9
Tak - igen igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester