[Flash] DuplicateMC's, RemoveMC's en z-index depth

Pagina: 1
Acties:

  • benoni
  • Registratie: November 2003
  • Niet online
Een autobus rijdt van het station weg met 4 passagiers. In de binnenstad komen er 5 passagiers bij. Om de hoek stappen er nog 2 mensen in, maar gaan er 3 mensen uit. Aan de rand van de stad stappen nog 4 mensen uit. 1 Persoon komt aangerend en kan nog net instappen... hoeveel keer is de bus nou gestopt?

Wie heeft zich niet een beetje belazerd gevoeld als klein kind, netjes alles uitgerekend en toch het antwoord niet weten? Nou, dat gevoel heb ik nu met Flash MX.

Ik ben bezig met de ontwikkeling van een Flash interface op basis van een producten-catalogus in XML. In het XML bestand staan ook alle hoofd- en submenu's van de website.

Afbeeldingslocatie: http://www.settembre.com/tweaks/lambo-menu-1.jpg

Als de gebruiker iets openklikt dan bouwt het script een submenu op door een loopje met duplicatieMovieClip() commando's te nemen:
JavaScript:
1
2
3
  that = "menu" + n + "item" + x;
  _way.menu_text.duplicateMovieClip(that, ++_var.last.zindex);
  _var.menu[n]._any[x] = that;


Met de teller _var.last.zindex houd het script bij op welk level hij was gebleven.
In de array _var.menu[n]._any houdt het script bij welke movieclips voor het menu aangemaakt zijn. De gebruiker kan zo een submenu van een submenu openklikken, en de hele stapel openstaande menu's wordt vanuit een library beheerd en blijft op het stage netjes terug te vinden.

Als de gebruiker terugklikt naar een hoger menu-niveau, leest het script de array _var.menu[n]._any uit en ruimt van de lagergelegen menu's de movieclips weer op:
JavaScript:
1
2
  that = _var.menu[n]._any[x];
  _way[that].removeMovieClip();


Nu wil ik natuurlijk de vrijgekomen z-index niveaus ook weer netjes kunnen hergebruiken. Ik probeer dat door de movieclips precies in tegengestelde volgorde te verwijderen, en voor elke verwijderde movieclip de z-index teller te verlagen:
JavaScript:
1
  _var.last.zindex--;


Maar nu neemt de scripting een loopje met mij. De eerstvolgende nieuwe movieclips die worden aangemaakt met hergebruikte z-index waarden, drukken zo nu en dan plompverloren een aantal bestaande movieclips van de stage. Ook als ik bij het verwijderen telkens het laastste z-indexlevel opvraag en kopieer naar _var.last.zindex gaat het niet veel beter:
JavaScript:
1
2
3
  that = _var.menu[n]._any[x];
  _var.last.zindex = _way[that].getDepth();
  _way[that].removeMovieClip();


In de hele scripting wordt verder geen duplicateMovieClip() gebruikt zonder de _var.last.zindex mee te verhogen. Desondanks lijkt het alsof de volgorde van Movieclips op de z-index op de een of andere manier door elkaar wordt gehusseld. Ik kan natuurlijk de z-index domweg alleen maar verder laten tellen, maar als iemand dan lang door de website bladert, lopen de indexlevels ook steeds verder op. Ik vind dat in ieder geval niet netjes.

Wat denken jullie ervan?

  • benoni
  • Registratie: November 2003
  • Niet online
Afbeeldingslocatie: http://www.settembre.com/tweaks/be-tackle-schop-1.gif

Laat ik het zo stellen: Flash z-index depth, is dat logica of loterij?

  • benoni
  • Registratie: November 2003
  • Niet online
Afbeeldingslocatie: http://www.settembre.com/tweaks/robvoerman-schop.gif
Grotere schop geleend van: Rob Voerman ;)

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

benoni schreef op 08 mei 2004 @ 16:23:
Laat ik het zo stellen: Flash z-index depth, is dat logica of loterij?
Nope. Voor meer informatie:

- Actionscript, The Definitive Guide 2nd ed.
- Chapter 13: MovieClips. Pagina 345.
- Zie plaatje Flash Player Stack.

HTH :)

"You're only as good, as what you did last week."


  • benoni
  • Registratie: November 2003
  • Niet online
oh,when? schreef op 10 mei 2004 @ 16:55:
[...]


Nope. Voor meer informatie:

- Actionscript, The Definitive Guide 2nd ed.
- Chapter 13: MovieClips. Pagina 345.
- Zie plaatje Flash Player Stack.

HTH :)
Dankjewel. Dit is al iets uitgebreider dan de o'Reilly's.
Het verklaart alleen nog niet het verschijnsel dat ik de de eerstvolgende vrije z-index waarde niet logisch kan afleiden als ik een x aantal MovieClips heb gedeleted.

Ik kan morgen de volgende dingen proberen om tot een oplossing te komen:
- Een functie maken die alle movieclips afstruint en van elke mc de depth opslaat in een array, zodat ik een lijstje van de gebruikte depths heb en aan de hand daarvan kan traceren waar het fout gaat. Of misschien heb ik wat gemist en kun je dat in de Flash player/debugger zo oproepen :?
- Elk menuniveau proberen een eigen z-index range te geven (0..99, 100..199 enz.), maar daar wilde ik liever niet aan beginnen omdat in het xml-bestand het aantal items per menu niet is gelimiteerd.
- Elk menuniveau aan een aparte movieclip of layer hangen, zodat ze elk hun eigen z-index reeks krijgen.

Als iemand al 's met dit bijltje gehakt heeft hoor ik 't graag :)