Forums Développement Multimédia

Aller au contenu

Parent enfant I addChild

CODE Actionscript

7 réponses à ce sujet

#1 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 11:20 AM

Bonjour,

D'avance merci pour les contributions.

Si je fais
addChild(ballon)

Le ballon est ajouter à la liste d'affichage.

Et si plus loin je refais
addChild(ballon)
ca veut donc dire que le ballon est à nouveau ajouter à la liste d'affichage en dessous du premier ballon ?

Je fais donc comment si je veut supprimez le premier ballon ?

#2 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 08 August 2013 - 11:53 AM

Bonjour,

Lorsque tu refais addChild sur le même objet (ici ballon), cet objet est "remonté" sur le dessus de la pile de la liste d'affichage.

conteneur.addChild ( ballon );
conteneur.addChild ( pelle );
conteneur.addChild ( seau );
Dans ce cas, ballon est au-dessous, puis viens pelle et enfin seau au-dessus. Avec donc trois objets dans la liste d'affichage de conteneur.

conteneur.addChild ( ballon );
conteneur.addChild ( pelle );
conteneur.addChild ( seau );
conteneur.addChild ( ballon );
Dans ce cas, ballon se retrouve au-dessus de seau, lui-même au-dessus de pelle. Mais tu n'as toujours que trois objets dans la liste d'affichage de conteneur, ballon n'est pas dupliqué.
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#3 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 21:35 PM

Bonsoir,

Très bien et en ce qui concerne la notion de parent et d'enfant, pourrai tu m'expliquer cela ?

conteneur.addChild ( ballon );
conteneur.addChild ( pelle );
conteneur.addChild ( seau );

Dans cette exemple "ballon" est le parent de "pelle" ?

#4 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 August 2013 - 22:40 PM

Salut,

Il te faut réviser la liste d'affichage : http://forums.mediab...19#entry1152719

Dans ton exemple ci-dessus, le parent de "ballon" de "pelle" et de "seau" est le même, il s'agit de "conteneur".

"addChil" = ajouter à la liste d'affichage
Par défaut "this" est le conteneur.

"conteneur.addChild" = ajouter à la liste d'affichage de "conteneur"

etc...

"conteneur" est le parent puisque tu lui ajoute un "enfant" via "addChild" (ajouter un enfant).

#5 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 08 August 2013 - 23:02 PM

Ouep j'ai du mal avec ça ^^

ok donc si par default je fait addChild(banane) et addChild(poire), le parent de banane et poire sera "this" ?

Et donc si je voudrais faire un removeChild(banane), je devrai écrire, this.removeChild(banane) ?

Ce qui pourrai s'écrire "le parent retire l'enfant de la liste d'affichage" ?

#6 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 08 August 2013 - 23:34 PM

Nelchael t'as déjà donné une explication du "this" sous entendu, dans ton autre sujet (merci d'ailleurs de ne pas ouvrir pleins de sujets autour du même problème, concentre tout sur un seul) : http://forums.mediab...ost__p__1160814

Voir le messageNelchaël, le 08 August 2013 - 11:15 AM, dit :

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.

As-tu lu la doc à propos de la liste d'affichage dans AS3 ?

Voici quelques infos utiles à lire :

http://help.adobe.co...90204-7e58.html
http://help.adobe.co...90204-7e3d.html
http://help.adobe.co...90204-7e26.html
http://help.adobe.co...90204-7dff.html
http://help.adobe.co...90204-7e36.html

Et l'incontournable : http://forums.mediab...d_affichage.pdf

#7 Nelchaël

  • Members
  • PipPipPipPipPipPipPipPip
  • 1900 messages

Posté 09 August 2013 - 02:51 AM

Pour nuancer ce que j'ai dit, je précise que dans certains cas relativement rares, les notations sans ciblage ou ciblées avec "this" peuvent différer (exemple dans une fonction imbriquée dans une méthode de classe).
Il faudrait peut-être plus parler de l'occurence de la classe contenant la méthode appelée que de "this", cela dit, dans l'idée ça ne change rien : malgré l'absence de ciblage visible, il y a bien un objet utilisé ("this" correspond généralement à cet objet) et si tu veux utiliser un autre objet, il faut passer à un ciblage explicite.

Citation

Et donc si je voudrais faire un removeChild(banane), je devrai écrire, this.removeChild(banane) ?
Tu n'es pas obligé d'écrire "this". Les notations sont en général équivalentes.
nelchael.fr freelance flash CS6

#8 philippeonline

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 102 messages

Posté 09 August 2013 - 12:37 PM

Merci pour la doc, je vais étudier cela.



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