21. februar 2002 - 22:54Der er
16 kommentarer og 1 løsning
Rekursiv funktion
Jeg laver et grid (15x25) bestående af 375 kasser i 5 forskellige farver, altså 75 af hver. Kasserne placeres randomize farvemæssigt, og systematisk navnemæssigt som;
Det jeg har brug for er en rekursiv funktion, der tjekker om sidemanden har samme farve, og hvis det er tilfældet, ja så skal funktionen kalde sig selv og so on... MEN - jeg er sq kun kommet til første led på hver side af valgte object. Jeg mangler altså funktioen der kalder sig selv, og bryder ud af loopet hvis værdien ikke findes.
Dette er mit udkast; function checkBox () { delboxes = new Array(); delboxes.push(_root.boxname); // left box_left = tetri[_root.boxposX-1][_root.boxposY]; Left_color = eval("_root.tile" add box_left add ".myCol"); if (left_color == _root.boxcolor) { delboxes.push(box_left); } // right box_right = tetri[_root.boxposX+1][_root.boxposY]; right_color = eval("_root.tile" add box_right add ".myCol"); if (right_color == _root.boxcolor) { delboxes.push(box_right); } // up box_up = tetri[_root.boxposX][_root.boxposY-1]; up_color = eval("_root.tile" add box_up add ".myCol"); if (up_color == _root.boxcolor) { delboxes.push(box_up); } // down box_down = tetri[_root.boxposX][_root.boxposY+1]; down_color = eval("_root.tile" add box_down add ".myCol"); if (down_color == _root.boxcolor) { delboxes.push(box_down); } delBox(); }
Er der nogen der har erfaring med dette, eller kan henvise til andre eksempler på rekursive funktioner, work-arounds etc.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Er det meningen at hver kasse objekt skal grupperes med andre kasser som har samme farve og som har en fælles kant ?
Synes godt om
Slettet bruger
21. februar 2002 - 23:21#2
Ja, det var menningen, -men min funktion når kun 1 led ud. Dvs. jeg fanger de kasser der ligger rundt om mit objekt som har samme farve. Idéen er at de omkringliggende kasser skal kalde samme funktion i funktionen, men uden at køre i uendeligt loop.
Denne funktion, ligger den på alle kasserne? Hvad med om den lå på tidslinien og blev kaldt fra hver kasse, som sender "sig selv med": _root.checkBox(this);
og funktion skal jo så se ca sådan her ud: function checkBox (objMC) {
Hvis et af dine check giver true, skal funktionen tvinge den omtalte box til også at lave checket, og hvis der så igen er true, så bliver der checket igen, og igen, indtil at alle check returnerer false.
Det er nok sådan jeg ville gribe det an på
Synes godt om
Slettet bruger
22. februar 2002 - 10:51#5
Funktionen ligger på tidslinien, og bliver kaldt fra den enkelte kasse når der trykkes. Kaldet medsender en variable der fortæller hvor den befinder sig i et 2dimensionelt array, og ud fra disse oplysninger kan jeg så se hvilke kasser der skal tjekkes op på, men som sagt når jeg kun et led ud
F.eks tjekker jeg her for den kasse der ligger til venstre for den valgte kasse ved at trække -1 fra i mit array i X-positionen; box_left = tetri[_root.boxposX-1][_root.boxposY];
Er det så ikke bare at checke videre i rækken? Hvis det er box1 der checker, og den finder ud af at box2 også er rød, så skal den fortælle box2 at den også skal lave checket
Synes godt om
Slettet bruger
22. februar 2002 - 12:28#7
Jo, det er det der er meningen men...
Hvis box1 tjekker box2, så skal box2 jo ikke tjekke box1 igen da det vil foresage et uendeligt loop. Hvis jeg har fire ens farver som nedenstående;
30 31 .. .. .. 45 46 .. .. ..
Og 30 er valgt, så finder den 45 og 31, men hvilken af de 2 skal tjekke 46? Og hvad skal 46 tjekke... Det er derfor jeg leder efter en rekursiv funktion som eksekverer i stacks, og som bryder ud af et loops
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.