Accueil > Forum > > > > If child exist: Remove child
If child exist: Remove child
vendredi 22 janvier 2010 à 00:38:23 |
If child exist: Remove child

MisterSnow
|
Bonjour,
Je suis coincé sur un problème qui est surrement très simple à résoudre.
Comme le dis le titre, je cherche la ligne de code qui me permettera, lorsque je clic sur un bouton, de supprimer un "child" à condition que celui-ci soit présent et d'en charger un nouveau à la place.
Forcément j'avais commencé par dérouler les lignes de code du type:
Code ActionScript :
acces_btn.addEventListener(MouseEvent.CLICK, function(){
removeChild(ancienChild1);
removeChild(ancienChild2);
removeChild(ancienChild3);
etc..
addChild(nouveauChild);
};
Mais forcément vu que les child n'étaient pas forcément présent flash me spécifiait qu'il était impossible de supprimer un élément null et ça finissait par buguer.
Alors j'ai fait des recherches sur le net et essayé 2 ou 3 choses du genre:
Code ActionScript :
acces_btn.addEventListener(MouseEvent.CLICK, function(){
if(ancienChild1 != null){removeChild(ancienChild1);
if(ancienChild2 != null){removeChild(ancienChild2);
if(ancienChild3 != null){removeChild(ancienChild3);
addChild(nouveauChild);
};
ou encore :
Code ActionScript :
acces_btn.addEventListener(MouseEvent.CLICK, function(){
if (this.numChildren>0) {
this.removeChild(); }
else {addChild(nouveauChild)};
A chaque fois le script ne comporte aucune erreur mais quand je publie ça ne maarche pas.
Les children ne sont pas supprimés et s'empilent les uns sur les autres.. .
Donc voilà, qqn a une idée ?
Merci d'avance pour votre aide !
M.S
|
|
vendredi 22 janvier 2010 à 14:03:18 |
Re : If child exist: Remove child
|
samedi 23 janvier 2010 à 01:26:15 |
Re : If child exist: Remove child

MisterSnow
|
Bonjour,
Merci pour ta réponse, je viens de chercher des infos sur la propiété "DisplayObjectContainer.contains" dans la doc d'adobe.
Seulement je sais pas, ce soir je dois avoir un peu de mal.. .
Dois-je m'en servir pour déterminer si l'enfant est présent et si oui comment? Parce que l'exemple donné pour "DisplayObjectContainer.contains" ne m'aide pas... Il parle de définir plusieurs objets Sprite et d'en ajouter une partie à la liste d'enfants des autres
Bref, I need more help sur ce coup !
Merci =)
M.S
|
|
samedi 23 janvier 2010 à 09:50:11 |
Re : If child exist: Remove child

blunt1337
|
Salut, c'est ta facon de définir la fonction liée à l'événement Dans ton cas le 'this' pointe vers l'object Global. Essai avec ce code sur la frame ou se trouve les 'ancienChildN' :
Code ActionScript :
acces_btn.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
//efface
if (ancienChild1)
removeChild(ancienChild1);
//ajoute
addChild(nouveauChild);
}
|
|
samedi 23 janvier 2010 à 11:17:46 |
Re : If child exist: Remove child
|
samedi 23 janvier 2010 à 18:29:25 |
Re : If child exist: Remove child

MisterSnow
|
@blunt : j'ai essayé avec ta méthode mais ça ne marche pas pourtant j'ai bien mis le code sur la frame où sont appelés les différents child.
Pour etre plus clair, ma page index comporte 3 frames:
- un preloader sur la 1ere
- une page d'accueil avec une anim et un bouton 'gotoAndstop(3)' sur la 2eme
- le gros du site où sont appelés ou effacé les swf exterieurs (child) sur la frame 3
Voici le code de ma 3eme frame à l'heure actuelle (qui ne fonctionne pas):
Code ActionScript : stop();
import com.greensock.*;
import com.greensock.plugins.*;
TweenPlugin.activate([BlurFilterPlugin]);
import flash.display.Sprite;
var stuRequest:URLRequest = new URLRequest("studio.swf");
var stuLoader:Loader = new Loader();
var realRequest:URLRequest = new URLRequest("real.swf");
var realLoader:Loader = new Loader();
var eventRequest:URLRequest = new URLRequest("event.swf");
var eventLoader:Loader = new Loader();
//animation des boutons et de l'image de fond à l'arrivée sur la frame 3
TweenLite.to(fond_mc, 2, {alpha:1});
TweenLite.from(studio_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(real_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(event_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(coll_btn,0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(dd_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(acces_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(news_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
TweenLite.from(contact_btn, 0.5, {scaleX:0, scaleY:1, blurFilter:{blurX:20}});
studio_btn.addEventListener(MouseEvent.CLICK, function(){
if (realLoader)
removeChild(realLoader);
if (eventLoader)
removeChild(eventLoader);
else {
TweenLite.to(fond_mc, 1, {x:580, y:385}),
TweenLite.to(studio_btn, 1, {x:235, y:260});
TweenLite.to(real_btn, 1, {x:50, y:60});
TweenLite.to(event_btn, 1, {x:50, y:160});
TweenLite.to(coll_btn, 1, {x:50, y:260});
TweenLite.to(dd_btn, 1, {x:50, y:360});
TweenLite.to(acces_btn, 1, {x:50, y:460});
TweenLite.to(news_btn, 1, {x:50, y:560});
TweenLite.to(contact_btn, 1, {x:50, y:660});
stuLoader.load(stuRequest);
addChild(stuLoader);
}
});
real_btn.addEventListener(MouseEvent.CLICK, function(){
if (stuLoader)
removeChild(stuLoader);
if (eventLoader)
removeChild(eventLoader);
else {
TweenLite.to(fond_mc, 1, {x:580, y:385}),
TweenLite.to(real_btn, 1, {x:235, y:260});
TweenLite.to(studio_btn, 1, {x:50, y:60});
TweenLite.to(event_btn, 1, {x:50, y:160});
TweenLite.to(coll_btn, 1, {x:50, y:260});
TweenLite.to(dd_btn, 1, {x:50, y:360});
TweenLite.to(acces_btn, 1, {x:50, y:460});
TweenLite.to(news_btn, 1, {x:50, y:560});
TweenLite.to(contact_btn, 1, {x:50, y:660});
realLoader.load(realRequest);
addChild(realLoader);
}
});
event_btn.addEventListener(MouseEvent.CLICK, function(){
if (realLoader)
removeChild(realLoader);
if (stuLoader)
removeChild(stuLoader);
else {
TweenLite.to(fond_mc, 1, {x:580, y:385}),
TweenLite.to(event_btn, 1, {x:235, y:260});
TweenLite.to(studio_btn, 1, {x:50, y:60});
TweenLite.to(real_btn, 1, {x:50, y:160});
TweenLite.to(coll_btn, 1, {x:50, y:260});
TweenLite.to(dd_btn, 1, {x:50, y:360});
TweenLite.to(acces_btn, 1, {x:50, y:460});
TweenLite.to(news_btn, 1, {x:50, y:560});
TweenLite.to(contact_btn, 1, {x:50, y:660});
eventLoader.load(eventRequest);
addChild(eventLoader);
}
});
@ Peg' : en fait dans ce que tu me suggère c'est la notion de "container" et de displayObject que j'ai du mal à saisir =(
Si je veux verifier si monDisplayObject est dans le container il faut paut-etre dans un 1er temps que je définisse ce qu'est le 'container'?
Concernant le displayObject, est ce que ça équivaut aux 'child' ?
Merci
M.S
|
|
samedi 23 janvier 2010 à 21:06:01 |
Re : If child exist: Remove child
|
dimanche 24 janvier 2010 à 04:11:40 |
Re : If child exist: Remove child

MisterSnow
|
Ok j'ai compris seulement comment je fait pour tester si mon child est dans le containeur ?
J'ai bien tenté :
Code ActionScript : this.contains(realLoader);
this.contains(stuLoader);
this.contains(realLoader)
event_btn.addEventListener(MouseEvent.CLICK, function(){
if (realLoader==true)
removeChild(realLoader);
if (stuLoader==true)
removeChild(stuLoader);
else {
addChild(eventLoader);
}
});
Mais ça ne marche pas -_-'
Pourtant si j'ai bien compris ce que tu dis Peg' les 'this.contains(monChild)' permettent de vérifier si monChild est présent dans 'this' en renvoyant un booléen donc "true" si il est présent ou "false" si il n'est pas présent, d'où le 'if(monChild==true)' dans la fonction attachée à mon bouton...
Alors voilà mon code parait une fois de plus logique comme tout ce que j'ai tenté jusqu'à maintenant et je ne comprend pas pourquoi il ne fonctionne pas...
Donc si vous savez ce qui cloche dans le pavé de code de mon message précédent ou dans le code contenu dans ce message, je suis tout ouïe et si jamais vous avez directement la solution à mon problème je suis preneur aussi. =D
|
|
dimanche 24 janvier 2010 à 04:46:52 |
Re : If child exist: Remove child
|
dimanche 24 janvier 2010 à 14:13:29 |
Re : If child exist: Remove child

MisterSnow
|
super...
bon j'ai tenté de ressaisir le truc mais bon je dois encore avoir faux puisque ça plante.
Code ActionScript :
var stuRequest:URLRequest = new URLRequest("studio.swf");
var stuLoader:Loader = new Loader();
var realRequest:URLRequest = new URLRequest("real.swf");
var realLoader:Loader = new Loader();
var eventRequest:URLRequest = new URLRequest("event.swf");
var eventLoader:Loader = new Loader();
//puisque contains n'est pas une action et qu'on ne peut pas mettre this.contains
var main:MovieClip=this;
studio_btn.addEventListener(MouseEvent.CLICK, function(){
if (main.contains(realLoader)){
removeChild(realLoader)}
if (main.contains(eventLoader)){
removeChild(eventLoader)}
else {
TweenLite.to(fond_mc, 1, {x:580, y:385}),
TweenLite.to(studio_btn, 1, {x:235, y:260});
TweenLite.to(real_btn, 1, {x:50, y:60});
TweenLite.to(event_btn, 1, {x:50, y:160});
TweenLite.to(coll_btn, 1, {x:50, y:260});
TweenLite.to(dd_btn, 1, {x:50, y:360});
TweenLite.to(acces_btn, 1, {x:50, y:460});
TweenLite.to(news_btn, 1, {x:50, y:560});
TweenLite.to(contact_btn, 1, {x:50, y:660});
stuLoader.load(stuRequest);
addChild(stuLoader);
};
});
Excusez moi d'être stupide mais une fois de plus je ne comprends pas ce qu'il y a de faux.
Pourtant ce que j'essaye de faire à l'air simple non ?
Allé je réexplique :
J'ai 8 boutons, chacun d'eux appelle un SWF externe et spécifique quand on clic dessus.
Ces SWF sont une suite d'images ou des sortes diaporamas.
J'aimerai que sur ma scène ces SWF externes s'affichent un seul à la fois (celui qui correspond au bouton cliqué) et ne se superposent pas.
Donc quand on passe d'une rubrique à l'autre en cliquant sur un bouton : une des animations externe s'efface et une nouvelle s'affiche.
Un exemple : je clic sur le bouton "studio" -> le fichier studio.swf est chargé et l'animation correspondant à la partie studio (contenue dans le swf) s'affiche.
Ensuite je clic sur le bouton "réalisations" -> j'aimerai que l'animation studio s'arrête et s'efface pour que le diaporama contenu dans realisations.swf ne se mette pas en place par dessus l'animation studio...
Seulement problème, si l'utilisateur clic directement sur "réalisations" sans passer par la page studio et que dans la fonction liée au bouton "réalisations" j'ai mis strictement "removeChild(studioLoader)" flash m'envoie (à juste titre) un message d'erreur comme quoi je tente d'effacer qqch qui n'existe pas. D'ailleurs c'est ce que j'avais fait au départ et ça ne marchais pas, ça finissait par planter.
Alors pour faire simple voici en français ce que j'essaye de retranscrire en AS:
Quand on clic sur le bouton accès :
- si le child "studio" est présent : efface le
- si le child "réalisations" est présent : efface le
- si le child "event" est présent : efface le
- si le child "XXX" est présent : efface le
- sinon : lance le child accès
ou encore (je ne sais pas si c'est possible)
Quand on clic sur le bouton accès :
-efface tout les child présents et lance le child accès
Après il se peut aussi que je ne m'y prend pas correctement et que ce que je viens d'écrire en français ne soit pas la bonne façon de s'y prendre... Mais dans ce cas il faut me le dire clairement.
Je comprends également que vous ne vouliez pas donner le code directement préfèrent donner des indices et mettre sur la voie celui qui demande de l'aide afin qu'il comprenne comment l'AS marche en trouvant par lui-même. C'est une position qui se défend mais là j'ai l'impression que je suis au fond du trou et que je creuse encore. Je suis peut-être stupide mais ce qui est sur c'est que ce n'est pas de la mauvaise volonté ^^
J'ai exploré vos pistes, tenté avec ce que vous m'avez proposé plus haut, tenté d'autres moyens trouvés dans la doc d'adobe mais visiblement j'ai pas été foutu d'interpréter ni la notice, ni vos conseils.
Toutes les différentes façons que j'ai utilisées me semblaient à chaque fois logiques, mais visiblement ma logique et la logique AS3.0 ça fait 2.
Enfin... je ne désespère pas...
M.S
|
|
Cette discussion est classée dans : code, child, removechild, forcément, if
Répondre à ce message
Sujets en rapport avec ce message
problème pour dupliquer le code [ par jaya ]
Bonjour,J'ai récuperer il y as quelques jours le code ci dessous, mon souci est que je n'arrive pas à y integrer d'autres balles, pour pouvoir varier
collisions bourrines et coordonnées [ par kin4n ]
Bonjour, je débute sous flash et j ai bien des misères à comprendre le systeme de parentage et d appel des hierarchies dans le code. Alors voici un co
Code FLASH [ par ethanwissing ]
Bonjour à tous !Pour un projet perso, j'ai utilisé un code ("bubble") téléchargé sur code_source.J'ai donc adapter le code à mes besoins et tout fonct
Zoom progressif suivant 2 scales prédéfinies sur tween rotation [ par BBFUNK01 ]
Bonsoir à toutes et à tous, j'aimerais pour mon diaporama ajouter une fonction qui permette de faire des rotations de +/-90° sur les images affichées
Question sur parallax Effect [ par LeHudiaa ]
Bonjour à tous, Je suis en train de faire un petit effet de parallax sur un bandeau pour un site... La base colle bien mais j'aimerai faire en sorte
Besoin d'aide pour un quiz flash tout simple... [ par tud ]
Bonjour à tous, avant tout je tiens à signaler que je ne suis qu'un humble graphiste qui sais faire des anims sur flash mais très peu de programmatio
RemoveChild ou autre chose? [ par celud ]
Bonjour, Je suis archi débutante en actionscript donc je vous demande un peu d'indulgence... Voici mon problème: je souhaite charger un contenu .swf l
[AS2] onMouseDown sur un Movieclip, mais c'est toute la scene qui réagit [ par Twinspirit ]
Bonjour, C'est étonnant, mais je suis un dev AS3 qui commence à peine à apprendre l'AS2 (ouaip, j'ai fait les choses à l'envers !). Je dois dire que
interaction entre swf et navigation entre frame [ par faster007 ]
bonjour , je souhaite en cliquant sur un bouton swf afficher une frame prédéfini sur un autre swf j'ai réussi en grande parti a l'aide d'un code :
Placer des images depuis un fichier XML [ par ulmo22 ]
Bonjour Voici mon problème , j'aimerais quelques modifications personnelles a un code que j'ai trouvé sur le net pour créer une galerie d'images, et
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|