PDA

Volledige versie bekijken : removeMovieClip() bug?


Tsuken
%Europe/Berlin %612 %2005, 15:42
Ik heb volgens mij een bug in Flash gevonden, of ik zie iets over het hoofd.

Doe dit:
1. Open een nieuw document
2. zet dit in het eerste frame:
//create movieclip
this.createEmptyMovieClip("myClip_mc", this.getNextHighestDepth());
myClip_mc.loadMovie("http://www.helpexamples.com/flash/images/image1.jpg");
//remove movieclip
removeMovieClip(this.myClip_mc);
3.Control > Test Movie

Je zult nu niks op het beeld zien, wat klopt, maar doe nu dit:

4. drag een User Interface component naar je library of stage (button, checkbox, accordion, anything)
5. Control > Test Movie

De movieclip blijft nu staan, dus removeMovieClip() werkt niet meer.
Hetzelfde effect gebeurd in zowel Flash 8 als in Flash MX 2004

Is dit een bug of doe ik iets fout? :S

Flasher
%Europe/Berlin %662 %2005, 16:54
Dit is een bekend probleem.
De handleiding zegt letterlijk:

Do not use MovieClip.getNextHighestDepth() with components; instead, use the depth manager. For more information, see DepthManager class in the Component Language Reference.

Het komt omdat components de bepaalde depths reserveren voor bijv. tooltips. De getNextHighestDepth functie geeft dan de depth daarboven, maar die is buiten het gebied waarin de removeMovieClip() functie movieclips can verwijderen.

Er zijn 2 oplossingen:
-Maak een eigen depth variabele en hoog die steeds op
-Gebruik de DepthManager class

Tsuken
%Europe/Berlin %700 %2005, 17:48
ik snap niet hoe het iets met depth te maken heeft. De movieclip wordt gewoon goed weergegeven, dus op een goede depth, toch?. Het verwijderen van de movieclip werkt juist niet meer. Waarom verwijderen dan opeens iets met depth te maken heeft snap ik niet.

Roenes
%Europe/Berlin %705 %2005, 17:55
removeMovieClip heeft maar een beperkte range van depths die die kan bereiken. Door het gebruik van components veranderd dit schijnbaar waardoor removeMovieClip niet bij jouw depth kan komen :)

Flasher
%Europe/Berlin %717 %2005, 18:12
http://www.macromedia.com/go/tn_19435
Een artikel over dit probleem met oorzaak, gevolgen en mogelijke oplossingen :)

Dauntless
%Europe/Berlin %718 %2005, 18:14
Je kan alleen maar movieclips verwijderen die liggen tussen 0 en 1048575. Als de depth groter of kleiner dan deze min en max is, kan je hem niet verwijderen met removeMovieClip();

Wel iets anders raar: Ikzelf gebruik noooit getNextHighestDepth() en toch heb ik een applicatie waarbij hij crasht als ik een component in m'n library zet... :s

//EDIT
Grr, 'k heb juist zelf zitten tracen tot waar die max lag :p.
Maar die minimum is toch nul? :s (Volgens MM is die -16383 ).

var m = this.attachMovie("mc", "mc"+i,-5);
m.removeMovieClip();

TheDutch
%Europe/Berlin %857 %2005, 21:34
Gebruik gewoon mijn prototype die de originele getNextHighestDepth() overschrijft en nu wel goed werkt :).

Klik hier! (http://www.flashfocus.nl/forum/showthread.php?t=604)

Tsuken
%Europe/Berlin %372 %2005, 09:55
bedankt voor alle replies :)