Equivalent getChildByName en as2

Résolu
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011 - 15 juil. 2009 à 11:21
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011 - 16 juil. 2009 à 14:04
Bonjour,

J'aimerai changer la ligne : monTube.getChildByName(tubeArray[i]) as MovieClip;
Afin de généraliser le code par la suite pour les MovieClips qui se situent dans le tableau tubeArray.

var tubeArray:Array = new Array();
var monTube:MovieClip = new MovieClip();

while (i<3) {
tubeArray.push(attachMovie("tube_mc", "tube_"+i+"_mc",
this.getNextHighestDepth(), {_x:posX, _y:posY}));

//LIGNE CI DESSOUS QUE J AIMERAI CHANGER
monTube.getChildByName(tubeArray[i]) as MovieClip;

i++;
}

Merci

8 réponses

dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
16 juil. 2009 à 12:25
lol
J'étais en train d'ouvrir flash pour faire un test, et c'est à l'air que je me soudainement dit :

"mais...on ne peut pas accéder à la classe MovieClip en as2??"
En gros, comme le flash player 8 avec l'as2 est carrément nul en déboguage et ne t'avertis de presque rien, il essaye de faire un nouvel objet MovieClip, ce qui échoue.

Ce qu'il faut faire en as2 :
createEmptyMovieClip
3
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
15 juil. 2009 à 12:00
Salut

Tu peux faire comme ceci :

monTube[tubeArray[i]];
Même en AS3 ça fonctionne, comme la scène est de type objet, tu peux accéder à tous ses enfants comme des propriétés d'un objet.
0
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
15 juil. 2009 à 12:28
Salut,

je ne sais pas ou j'ai merdé mais ça n'a pas l air de fonctionner. J'ai bien remplacé la ligne : monTube.getChildByName(tubeArray[i]) as MovieClip;
par monTube[tubeArray[i]];

Mais par la suite si je mets quelque chose du genre monTube.onRelease... rien ne se passe. Le pointeur "btn" ne s'affiche même pas.

Si je trace monTube j'ai en sortie [object Object].

Je ne sais plus trop quoi essayer.

Merci
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
15 juil. 2009 à 21:04
Salut,

Tout d'abord monTube est un MovieClip vide...comment voudrais-tu rechercher des enfants dedans????

Tous les clips que tu crees sont dans un tableau, et sur la scene principale (la ou tu as ecris ton script)

Salut, et bonne continuation.


http://liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
16 juil. 2009 à 10:17
Salut

Ben je sais bien que le mc monTube est vide, vu que la question initiale était comment le remplir avec les éléments contenus dans tubeArray, afin que par la suite je puisse faire quelque chose de général pour l'ensemble des évènements du genre monTube.on.....

Voila.
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
16 juil. 2009 à 11:16
Salut

Donc si on a bien compris, monTube est le conteneur de tous tes éléments ? et tu voudrais appliquer un événement sur chacun de ces éléments?

Si c'est le cas, il faudrait que ton attachMovie soit sur ce conteneur, c-a-d :
tubeArray.push(monTube.attachMovie("tube_mc", "tube_"+i+"_mc", monTube.getNextHighestDepth(), {_x:posX, _y:posY}));

Car dans ton code précédemment, tes mc tube_mc étaient ajoutées sur la scène et non pas dans monTube..
0
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
16 juil. 2009 à 11:38
Quand j'ai vu ton post dj_ouf, je me suis dis merde c'est ça et c'était si simple. Après avoir essayé ça ne marche toujours pas.

Je poste le code dans son intégralité peut être que ça vous facilitera la tache.

var largeurScene:Number = Stage.width/2;
var hauteurScene:Number = Stage.height/2;

attachMovie("instruction_mc","instruction_mc",this.getNextHighestDepth(),{_x:largeurScene, _y:hauteurScene});

instruction_mc.onRelease = function() {
instruction();
};

function instruction() {
instruction_mc.removeMovieClip();
ecouteurTube();
}

function ecouteurTube() {
import mx.transitions.Tween;
import mx.transitions.easing.*;

var tweenTime:Number = 0.3;
var positionTube:Number = 1;

var level:Number = 1;
var levels:Array = new Array();
levels[1] = "2,1,3";

var conteneur:Array = new Array();
conteneur = levels[level].split(",");

var posX:Number = 50;
var posY:Number = 100;

var i:Number = 0;

var tubeArray:Array = new Array();
var monTube:MovieClip = new MovieClip();

while (i<3) {
tubeArray.push(monTube.attachMovie("tube_mc", "tube_"+i+"_mc", monTube.getNextHighestDepth(), {_x:posX, _y:posY}));
tubeArray[i].gotoAndStop(conteneur[i]);

trace(tubeArray[i]);
trace(monTube);

posX += 50;
i++;

var oEcouteur:Object = new Object();
oEcouteur.onMotionFinished = function(tw:Tween):Void  {
monTube.enabled = true;
if (positionTube 1 || positionTube 2 || positionTube == 3) {
positionTube++;
} else if (positionTube == 4) {
positionTube = 1;
}
};

monTube.onPress = function() {
this.enabled = false;
if (positionTube == 1) {
var tube:Tween = new Tween(this, "_rotation", Regular.easeOut, 0, 90, tweenTime, true);
}
if (positionTube == 2) {
var tube:Tween = new Tween(this, "_rotation", Regular.easeOut, 90, 180, tweenTime, true);
}
if (positionTube == 3) {
var tube:Tween = new Tween(this, "_rotation", Regular.easeOut, 180, 270, tweenTime, true);
}
if (positionTube == 4) {
var tube:Tween = new Tween(this, "_rotation", Regular.easeOut, 270, 360, tweenTime, true);
}
trace(tubeArray[i]);
tube.addListener(oEcouteur);
};
}
}


Encore merci d'essayer de m'aider.
0
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
16 juil. 2009 à 14:04
Merci pour tout, voila un problème de résolu.
0
Rejoignez-nous