Stockage variable plus affectation élément array

Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011 - 9 juil. 2009 à 14:34
Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011 - 9 juil. 2009 à 16:40
RE : bonjour,

Comme expliquer dans un message antérieur, je suis en train d'essayer de faire un jeu du plombier.

Me voici avec un autre problème pour aujourd'hui.
J'ai :
- une variable positionTube qui comprend 4 valeurs : 1,2,3 et 4.
- un array (nommé : monTube) dans lequel j'attache plusieurs fois un même clip mais sur des frames différentes.

Le problème : il faudrait que je puisse stocker la valeur positionTube pour chaque clip attacher sur la scène. afin que de pouvoir lancer la bonne tween pour chaque élément.

J'ai essayé un truc dans le genre : monTube[i].positionTube mais sans succès.

Quelle serait la solution : un tableau bidimensionnel ou autre?

Le code ci-dessous :

[as]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,1,1,2,3,2";

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

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

var i:Number = 0;

while (i<8) {
var monTube:Array = attachMovie("tube_mc", "tube_"+i+"_mc",
this.getNextHighestDepth(), {_x:posX, _y:posY});
monTube.gotoAndStop(conteneur[i]);
monTube[i].positionTube=1;
trace(monTube[i].positionTube);
posX += 50;
i++;
trace(monTube);

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

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

Merci pour votre patience.

1 réponse

Ariranha Messages postés 79 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 27 juillet 2011
9 juil. 2009 à 16:40
J ai fait un petit remaniement de code :

var monTube:Array = new Array();

while (i<8) {
monTube.push(attachMovie("tube_mc", "tube_"+i+"_mc", this.getNextHighestDepth(), {_x:posX, _y:posY}));
monTube[i].gotoAndStop(conteneur[i]);
monTube[i].positionTube = 1;
trace(monTube[i].positionTube);
trace(monTube[i]);
posX += 50;
i++;

Aux traces j'ai bien les bonnes valeurs qui apparaissent. Mais je me retrouve avec un problème de contexte si je mets par exemple sur la scene un MovieClip test et que je rajoute dans ma boucle
test.onPress = function(){
trace(monTube[i].positionTube);
trace(monTube[i]);
}

J'ai en sortie undefined pour les deux.

D'autre part maintenant que monTube est un array je ne peux bien entendu plus lui attribuer d'évènement du genre monTube.onPress.

Est ce qu'il y a une solution pour palier à ceci?

Merci
0
Rejoignez-nous