Forums Développement Multimédia

Aller au contenu

Supprimez une occurrence dans diverse fonctions

CODE Actionscript

5 réponses à ce sujet

#1 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 09:50 AM

Hello,

J'ai besoin d'aide.

Mon problème est le suivant:

J'ai besoin de supprimez une occurrence de type clip mais je reçois toujours un message d'erreur avec removeChild.

L’occurrence doit pouvoir être supprimez (à moins que rendu invisible suffit ?) dans différent événements

Par exemple:

Je clic sur un ballon. L’occurrence ballon 1 disparaît.
Le même ballon n'est pas cliquez mais sort de la scène.Il doit disparaître.

Le ballon n'est pas cliquez, ne sort pas de la scène mais est heurté par un objet (hittest), il doit disparaître.

SI j'ai bien compris l'erreur est qu'on ne peut pas demander un removeChild du ballon dans plusieurs fonction différente, alors comment faire ?

j'ai pensé crée un écouteur d’événements type ENTER_FRAME qui surveille ces trois événements potentiel et à l’intérieur d'une fonction les supprimes, qu'en dite vous ?

Merci.

PS: C'est dingue que cela soit si galère pour viré une occurrence de la scène ! Les livres que j'ai lu jusqu'ici élude toujours la question, dans leur exemple, jamais on ne doit supprimez une occurrence suite à différent événements.

#2 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 09:54 AM

Je précise que comme il y a des instructions conditionnel jamais la même occurrence n'est demandé à être removeChild deux fois de suite.
Alors pourquoi diable il me casse les bonbons avec ces histoires d'enfant et de parents lol

#3 Nelchaël

  • Members
  • PipPipPipPipPipPipPipPip
  • 1900 messages

Posté 08 August 2013 - 11:15 AM

Citation

SI j'ai bien compris l'erreur est qu'on ne peut pas demander un removeChild du ballon dans plusieurs fonction différente, alors comment faire ?
Mais si, c'est tout à fait possible.
Dans ton autre sujet, Monsieur Spi t'a donné une solution universelle :

Citation

Si tu ne sais pas quel est le DisplayObject où ton objet à été créé, tu peux utiliser la syntaxe : monObjet.parent.removeChild(monObjet);
Ca marche dans n'importe quelle fonction.
Si besoin, tu ajoutes un "if(monObjet.parent!==null)".

Pour expliquer le problème que tu rencontres sans doute :
Quand tu écris juste "addChild(...)", c'est comme si tu écrivais "this.addChild(...)", et c'est pareil avec "removeChild".
Le "this" est sous-entendu.

Si le "removeChild" est exécuté dans une autre fonction que le "addChild", alors la valeur du "this" peut être différente.
Si la valeur du "this" est la même, alors le "removeChild" fonctionnera, sinon il échouera.

La valeur du "this", c'est l'objet sur lequel est exécutée la fonction (souvent c'est l'occurence d'une classe contenant la fonction).

Dans le cas où "this" n'est pas le parent de l'objet, il faut cibler l'appel de removeChild avec le bon parent et donc ne pas écrire juste "removeChild(...)" sans rien devant.

Edit : J'apporte une petite nuance ici :
http://forums.mediab...ost__p__1160839
nelchael.fr freelance flash CS6

#4 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 11:46 AM

Bonjour et merci pour l'astuce, ça à l'air de fonctionner pour le moment. :Hola:

Spi et toi même avez toute ma gratitude.

#5 James017

    Ceinture Blanche

  • Members
  • Pip
  • 1 messages

Posté 07 November 2015 - 06:51 AM

j'ai souvent des erreurs, il semble qu'on ne puisse pas procéder ainsi pour supprimez une occurrence ailleurs que dans la fonction qui l'a crée ( avec addChild)????

#6 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 07 November 2015 - 10:28 AM

Hello,

Peu être que tu demande involontairement au programme de supprimez une occurrence deux fois de suite.
C'est ce qui se passe par exemple quand tu écrit removeChild(monObjet) dans un événement ENTER_FRAME.

Ou encore si tu a deux fonction qui supprime un même objet avec removeChild(monObjet). A l’exécution de la première fonction l'objet sera "supprimez" et à l’exécution de la deuxième tu demande au programme de supprimez un objet qui est déjà supprimez ! = plantage.

++



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP