« STIC Discussion:STIC I - exercice 6 (Stella) » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
(→‎Timer et removechild -- ~~~~ : nouvelle section)
Ligne 44 : Ligne 44 :
   
   
Une idée?
Une idée?
== Gestion de Children nominativement -- [[Utilisateur:Jaboulay|Jaboulay]] 8 décembre 2010 à 15:59 (CET) ==
'''Voici une petite explication pour savoir créer des children adressables nominalement, puis les manipuler et enfin les détruire: '''
'''L'exemple ci dessous permet de créer 3 sprites enfants et de détruire celui qui s'appelle "MonSprite2" à l'aide d'une fonction générique extrêmement pratique.'''
var MonSprite:Sprite;
this.addChild(MonSprite);
MonSprite.Name = "MonSprite1"
this.addChild(MonSprite);
MonSprite.Name = "MonSprite2"
this.addChild(MonSprite);
MonSprite.Name = "MonSprite3"
'''Voici une petite fonction, pour effacer un enfant dont on passe le nom:'''
removeChildWithRef("MonSprite2",this);
'''ceci est identique à'''
i=2;
removeChildWithRef("MonSprite"+i,this);
'''et finalement la fonction générique:
'''
function removeChildWithRef(spriteName:String, parentObj:*)
{
var t:DisplayObject = parentObj.getChildByName(spriteName);
parentObj.removeChild(t);
}
'''Bref, le secret réside dans l'utilisation de la propriété getChildByName(spriteName)'''

Version du 8 décembre 2010 à 16:59

Librairie? -- Aline Meyer 2 décembre 2010 à 18:36 (CET)

Bonsoir, Ce message car je suis coincée depuis plusieurs heures sur mon exercice 6, dont vous trouverez le fichier fla à l'adresse suivante : http://tecfaetu.unige.ch/etu-maltt/pixel/meyeral5/stic-1/ex6/ J'aimerais dans un premier temps réussir à réaliser une animation similaire à celle du canon2 ; en cliquant sur la ruche, les abeilles volent. J'ai donc créé mes clips, ma scène et mes layers. J'aimerais maintenant utiliser la librairie AS externe, que j'ai défini comme expliqué dans le tutoriel "Utilisation de librairies". J'ai maintenant copié votre code AS3, pour m'entraîner ; puis le changerai un peu dans un second temps. Toutefois, lorsque j'exécute, rien ne marche ; pourriez-vous y jeter un oeil et voir où ça croche? Est-ce dans la définition du chemin de la librairie, ou dans mon code lui-même? Je n'y vois plus clair! Merci beaucoup d'avance. Aline

Re: Librairie? -- Daniel K. Schneider 2 décembre 2010 à 22:51 (CET)

Désolé j'ai un gros rhume et suis naze, donc j'ai juste pris le temps pour trouver l'endroit qui coince. Faut enlever le texte ("Clique sur ....). La ruche, l'abeille et actionscript va très bien sans.

.... mais aucune idée ce qui coince avec le texte.... essayez d'en mettre un autre, neuf. A la limite, utilisez un text "Classic" donc pas TLF. Si vous n'arrivez pas me dire de nouveau.

PS: Bien entendu, AS doit trouver la librairie greensock.swc (chez vous dans F:\qq_part) mais en tout cas chez moi cela tourne si je change le chemin.

Re: Re: Librairie? -- Aline Meyer 3 décembre 2010 à 16:19 (CET)

Merci beaucoup! Etrange. J'ai créé un nouveau frame "texte" et y ai copié mon texte "Clique sur...", et maintenant ça fonctionne. Super. Bon rétablissement et bon week-end!

Timer et removechild -- Jaboulay 8 décembre 2010 à 11:14 (CET)

Voilà, je bloque : dans mon exercice je crée des poissons. Ces poissons sont des childs. Mais je veux que chaque poisson disparaisse après quelques secondes. Je n'arrive pas à gérer les childs...

ObjetAcliquer.addEventListener(MouseEvent.MOUSE_DOWN, createpoisson);


function createpoisson(event:MouseEvent):void {

poisson  = new Poisson ();
stage.addChild( poisson);
var timer:Timer = new Timer(4000, 1);
timer.addEventListener(TimerEvent.TIMER, removeFish);
timer.start();

}

function removeFish(event:TimerEvent):void {

 stage.removeChild(poisson);

}


Une idée?

Gestion de Children nominativement -- Jaboulay 8 décembre 2010 à 15:59 (CET)

Voici une petite explication pour savoir créer des children adressables nominalement, puis les manipuler et enfin les détruire: L'exemple ci dessous permet de créer 3 sprites enfants et de détruire celui qui s'appelle "MonSprite2" à l'aide d'une fonction générique extrêmement pratique.


var MonSprite:Sprite;

this.addChild(MonSprite); MonSprite.Name = "MonSprite1"

this.addChild(MonSprite); MonSprite.Name = "MonSprite2"

this.addChild(MonSprite); MonSprite.Name = "MonSprite3"

Voici une petite fonction, pour effacer un enfant dont on passe le nom:

removeChildWithRef("MonSprite2",this);

ceci est identique à

i=2; removeChildWithRef("MonSprite"+i,this);


et finalement la fonction générique:

function removeChildWithRef(spriteName:String, parentObj:*) { var t:DisplayObject = parentObj.getChildByName(spriteName); parentObj.removeChild(t); }

Bref, le secret réside dans l'utilisation de la propriété getChildByName(spriteName)