Question

J'utilise actuellement trois Uiloaders à l'intérieur d'un Parent MovieClip qui charge trois autres fichiers SWF. Chacun de ces motionslips a des événements de clavier qui, lorsqu'ils sont frappés, appellent différents sons.

J'ai un problème lorsque je vais sur un movieclip et je reviens au parent, l'écouteur d'événements est toujours actif. J'ai essayé différentes choses comme le déchargement du fichier SWF à partir de l'Uiloader, mais l'événement est toujours actif et peut accéder à ce qu'il soit directement après avoir mis fin.

Je suis presque sûr que le problème est que j'ai l'auditeur d'événements sur scène, mais je ne sais pas vraiment comment le décharger une fois que je suis hors du fichier SWF.

Toute aide est la bienvenue.

Était-ce utile?

La solution

Vous avez raison. Les événements de clavier sont le plus souvent enregistrés avec la scène (c.-à-d. Stage.AddeventListener (KeyboardEvent.Key_up, Some-Function);), ce qui signifie que la scène détient une référence à votre Movieclip l'empêchant de collecter des ordures, même si vous essayez de le décharger.

Il y a deux façons de contourner cela. Vous devez soit désinscrire le clavierListener Stage.RemoveEventListener (KeyboardEvent.key_up, SomeFunction); Ou vous pouvez enregistrer l'auditeur comme une référence faible:

stage.addeventListener (keyboardEvent.key_up, somefunction, false, 0, true);

Lorsque le dernier argument (vrai) signifie que l'événement est enregistré comme une référence faible. Par défaut est faux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top