Avatar billede pegasus72 Nybegynder
10. februar 2005 - 11:13 Der er 19 kommentarer og
1 løsning

MovieClipLoading efter array i sekvens, (mc.onLoadComplete)

Har at array med 20 billeder og targets:


billeder = [["billede1.jpg", "billede1_target"],
          ["billede2.jpg", "billede2_target"], osv..

Hvordan laver jeg en løkke der bruger movlieClipLoader Class og først henter "billede1.jpg" ind i "billede1_target",
venter til det er onLoadComplete og kører så Mcl på næste billede i arrayet?

Har fundet ud af at man lærer uhyggeligt meget af at læse hajernes kode, da det er minimalistisk og enkelt, man er vidst lidt "rodet" med sin kodning i starten når overblikket ikke rigtigt er der endnu..

Tak!
Avatar billede barklund Nybegynder
10. februar 2005 - 11:17 #1
var billeder = [...];
var tæller = 0;
var hent_billeder = new MovieClipLoader();
hent_billeder.onLoadComplete = næsteBillede;
function næsteBillede() {
    if (tæller < billeder.length) {
        hent_billeder.loadClip(billeder[tæller], createEmptyMovieClip("holder" + tæller, tæller);
        tæller++;
    }
}
hent_billeder.onLoadInit = function(mc) {
    trace("billede "+mc+" er nu korrekt hentet");
}
næsteBillede();
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 11:23 #2
--> barklund
Hvor er det sygt! Skal vi ikke bytte hjerner? Hehe...
Det var dælme hurtigt...
Tør man spørge hvad du laver til daglig? Proffesionel programmør eller?
Svar tak!
Avatar billede barklund Nybegynder
10. februar 2005 - 11:47 #3
Studerer til civilingeniør indenfor informatik, arbejder ved siden af hos Shockwaved (http://shockwaved.com), laver sjældent meget andet end actionscript.
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 11:56 #4
Ok... Så er det dig der har udviklet 3's site?

Tænkte på om jeg kan give billeder et listen i forbindelse med løkken? onRelease f.eks
Avatar billede barklund Nybegynder
10. februar 2005 - 12:02 #5
Nu er vi ret mange herinde, så jeg laver ikke alt hvad vi laver :)

Derudover kan du angive funktionalitet på billedernes movieclipholdere i onLoadInit funktionen - det ville være smartest.
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 12:12 #6
Dvs.
hent_billeder.onLoadInit = function(mc) {
        mc.onRelease = function() {
              trace(this+ "er trykket!")
              }
        }
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 12:17 #7
Svar forresten!
Avatar billede barklund Nybegynder
10. februar 2005 - 12:28 #8
Ja, det er absolut metoden - dog hvis alle billeder skal have samme funktion (og det skal de jo) så er det smartere at skrive:

function billedeTrykFunktion() {
    trace(this+ "er trykket!")
}
hent_billeder.onLoadInit = function(mc) {
    mc.onRelease = billedeTrykFunktion;
}

--
Morten Barklund
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 12:39 #9
Hvorfor er det smartere at sætte det til = funktion, uden (), lagde jeg mærke til..
Avatar billede barklund Nybegynder
10. februar 2005 - 12:48 #10
I din version laves en (anonym) funktion for hvert movieclip - alle funktionerne er ens, men de optager hver deres plads i hukommelsen. I min version er der kun en funktion, og alle movieclips'nes onRelesae sættes til denne funktion - altså kun en funktion, men mange referencer til den.
Avatar billede barklund Nybegynder
10. februar 2005 - 12:48 #11
Det er en langt bedre praksis at holde sig til :)
Avatar billede barklund Nybegynder
10. februar 2005 - 12:48 #12
Og tark for points :)
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 15:01 #13
Kunne man forresten i arrayet også definere onRelease funktionen? Altså:

hent_billeder.onLoadInit = function(mc) {
    mc.onRelease = billeder[i][2];
}
Hvor billeder = ["billede1.jpg", "billede1_target", trace(this+ "er trykket") ??
Avatar billede barklund Nybegynder
10. februar 2005 - 15:06 #14
Say what? onRelease skal være en funktion - ikke et array? Jeg er ikke helt med på, hvad du vil have den til, men det du har skrevet giver *ingen* mening!
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 15:17 #15
Nå ja...
Det var simpelthen om forskellige billeder kunne få forskellige funktionskald ud fra arrayet...
Kan man så:

function billedeTrykFunktion() {
    trace(this+ "er trykket!")
}
billeder = ["billede1.jpg", "billede1_target", billedeTrykFunktion];

hent_billeder.onLoadInit = function(mc) {
    mc.onRelease = billeder[i][2];
}


Og så have forskellige funktioner defineret som billedeTrykFunktion()?

Sig lige til hvis det burde være nyt spørgsmål..
Avatar billede barklund Nybegynder
10. februar 2005 - 15:18 #16
Altså skal billederne have hver sin trykfunktion? Jeg forstår ikke hvad du vil. Sig hvad du vil, så tegner jeg løsningen - det er nok det klogeste for alle, så jeg ikke skal sidde og gætte :)
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 15:45 #17
Ja hver sin trykfunktion...
Hvor navnet på funktionen er i arrayet og defineret i starten..

function funktion1() {
        //et eller andet
        }
function funktion2() {
        //et eller andet
        }
billeder = [["billede1.jpg", "billede1_target", funktion1],
            ["billede2.jpg", "billede2_target", funktion2]]

hent_billeder.onLoadInit = function(mc) {
    mc.onRelease = billeder[i][2];

Det ser sgu rigtigt ud! Eller...
Avatar billede barklund Nybegynder
10. februar 2005 - 15:49 #18
Nejnej, fortæl hellere, hvad der gør dine funktioner forskellige?

Er det sådan fuldstændigt vidt forskellige eller er de relaterede, men bare med forskelligt target/tekst noget...?
Avatar billede pegasus72 Nybegynder
10. februar 2005 - 16:46 #19
Ja nu du siger det, så er de faktisk identiske... Sorry.. Lige til sidst:
Hvorfor skriver man: mc.onRelease = billedeTrykFunktion; altså uden ()?
Ikke mere herfra, opretter nye spørgsmål når jeg kommer til det..
Tusind tak for hjælpen indtil videre..
Martin..
Avatar billede barklund Nybegynder
10. februar 2005 - 19:38 #20
Kan du se forskellen på:

var test = Math.random;
var test = Math.random();

Det første sætter test til at være en reference til den funktion, som Math.random er en reference til. Det andet sætter test til at være resultatet af kaldet af funktionen Math.random. Det er jo to helt forskellige ting.

Det samme hvis man skrev:

mc.onRelease = billedeTrykFunktion();

Så satte man onRelease til at være resultatet af et funktionskald - men funktionen returnerer ikke noget, så onRelease ville bare være undefined. Men det er også sjældent man har en funktion, der returnerer en funktion. I stedet skal onRelease jo sættes til at være en reference til samme funktion, som billedeTrykFunktion er en reference til. Det er ikke det samme. Funktioner er faktisk (som du kan se) variabler som alle andre variabler er det. Man kan ikke kun kalde funktioner, man kan også flytte rundt på dem.

--
Morten Barklund
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