begin process at 2012 02 08 19:02:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Récupération Array onPress


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupération Array onPress

mercredi 10 décembre 2008 à 22:53:06 | Récupération Array onPress

Orange73

Membre Club
Hello,

Voila je block sur un truc que je savai faire... mais je me souviens plus LOL.

Je n'arrive plus a faire afficher mon trace :

var nbItems = 6;
var spaceY = 10;
var baseY = 10;

for(i=0;i<nbItems;i++){
    myArray = new Array();
    myArray[i] = this.attachMovie("btn","btn"+i,i);
    myArray[i]._x = 20;
    myArray[i]._y = baseY;
    baseY += myArray[i]._height + spaceY;
   
    myArray[i].baseItemY = myArray[i]._y;
   
    myArray[i].onPress = function(){
        trace(myArray[3]._name);
    }
}



Petite aide plz
mercredi 10 décembre 2008 à 23:24:04 | Re : Récupération Array onPress

crackter

salut,

c'est comme d'habitude un soucis de portée de variable.
Il faut créer l'array en dehors de la boucle car le garbage collector efface le tableau.

donc :

var myArray=new Array();
for (var i:Number=0;i<nbItems;i++) {
  myArray.push(....);
  ...
  ...
}
mercredi 10 décembre 2008 à 23:37:58 | Re : Récupération Array onPress

Orange73

Membre Club
Ok merci, tu as raison.

juste pour confirmation, dans mon exemple, je dois pas faire de push ?

cela suffit ?

var nbItems = 6;
var spaceY = 10;
var baseY = 10;
var
myArray = new Array();

for(i=0;i<nbItems;i++){ 
    myArray[i] = this.attachMovie("btn","btn"+i,i);
    myArray[i]._x = 20;
    myArray[i]._y = baseY;
    baseY += myArray[i]._height + spaceY;
   
    myArray[i].baseItemY = myArray[i]._y;
   
    myArray[i].onPress = function(){
        trace(myArray[3]._name);
    }
}

Comment tu aurais fait toi ?
jeudi 11 décembre 2008 à 00:13:33 | Re : Récupération Array onPress

Orange73

Membre Club
Sinon comment je peux faire pour recuperer l'array entier (en rouge) dans ma fonction onPress ?

J'ai testé sa... marche po... normal plus de boucle.

for(i=0;i<nbItems;i++){ 
    myArray.push(this.attachMovie("btn","btn"+i,i));
    myArray[i]._x = 20;
    myArray[i]._y = baseY;
    baseY += myArray[i]._height + spaceY;
   
    myArray[i].baseItemY = myArray[i]._y;
   
    myArray[i].onPress = function(){
        trace(myArray[i]._name);
    }
}

jeudi 11 décembre 2008 à 00:28:22 | Re : Récupération Array onPress

Orange73

Membre Club
myArray[i].onPress = function(){
        trace(myArray);
    }



Maintenant je souhaiterai faire une condition dans ce onPress :

if( myArray[i].id > this.id ){
    // blablabla
}

Bien sur sa marche pas xD... comment puis-je faire ?





jeudi 11 décembre 2008 à 12:41:51 | Re : Récupération Array onPress

crackter

Salut,

toujours pareil :). le myArray[i].onPress, la fonction d'onpress va "pointer" sur myArray[i], donc i n'est plus connue puisqu'il appartenait à la boucle. Soit tu met une valeur fixe à la place de i, soit tu utilises une variable "temp" à la création du genre myArray[i].tag=i
jeudi 11 décembre 2008 à 16:00:29 | Re : Récupération Array onPress

Orange73

Membre Club
Hello,
merci pour ta reponse :)

mais c'est ce que j'ai essayer de faire :

myArray[i].id = i;

myArray[i].onPress = function(){
      
if( myArray[i].id > this.id ){
           // blablabla
      }

}


sa marche pas quand meme du fait que je souhaite executer un script seulement pour les elements de myArray qui sont une id superieur a l'element myArray cliké... !
jeudi 11 décembre 2008 à 22:59:39 | Re : Récupération Array onPress

crackter

myArray[i].id = i;

myArray[i].onPress = function(){
      
if( myArray[i].id > this.id ){
           // blablabla
      }

}

le i dans le onPress est indéfinie, même si tu l'a créé dans la boucle.

En fait il est créé dans la boucle, il existe bien à ce moment là, mais au moment où on press l'élément contenu dans myArray, i est undefined, donc cela correspond à un myArray[undefined] donc undefined > this.id, et forcément ça pose quelques soucis :).

Je ne comprend pas pourquoi tu veux comparer myArray[i].id et this.id puisque dans la logique que tu veux employer, les 2 sont forcément équivalents. Si i vaut 2 tu voudrais faire :

myArray[2].id=2;
myArray[2].onPress=function() {
  if (myArray[2].id>this.id) { // donc this.id>this.id (puisqu'on est dans le onpress de myArray[2], donc 2>2, donc il ne pourra jamais être lancé.
    //
  }
}


il faudrait que tu essaye plutot une variable qui sauvegarde le clip dernièrement cliqué, ou son id. Essaye un truc du genre :

var nbItems:Number = 6;
var spaceY:Number = 10;
var baseY:Number = 10;
var
myArray:Number = new Array();
var lastClick:Number = -1;

for(var i:Number=0;i<nbItems;i++){ 
  var monclip:MovieClip = this.attachMovie("btn","btn"+i,i);
  monclip._x = 20;  monclip._y = baseY;
  baseY += monclip._height + spaceY;
  monclip.baseItemY = monclip._y;
  monclip.onPress=function() {
    if (lastClick<this.id) {
      lastClick=this.id;
      //instructions...
    }
  }
  myArray.push(monclip);
}

jeudi 11 décembre 2008 à 23:38:22 | Re : Récupération Array onPress

Orange73

Membre Club
merci pour ta reponse mais mon probleme n'est pas car je sais faire tous cela

en fait mon but est de faire bouger tout mes boutons de _x + 10 dont l'id est > au bouton cliqué...

je pense au'il faut que je repasse par une boucle for dans mon onPress ou alors for in si j'utilise un tablequ...


je voit pas d'autre solution... Et toi ?
vendredi 12 décembre 2008 à 00:21:05 | Re : Récupération Array onPress

crackter

Réponse acceptée !
monclip.onPress=function() {
  for (var val:String in myArray) {
    if (myArray[val].id>this.id) myArray[val]._x +=10;
  }
}

monclip.onPress=function() {
  for (var i:Number=0;i<myArray.length;i++) {
    if (myArray[i].id>this.id) myArray[i]._x +=10;
  }
}

1 2

Cette discussion est classée dans : var, array, onpress, myarray, basey


Répondre à ce message

Sujets en rapport avec ce message

If "valeur" est dans array() .... [ par mattdelavega ] BonjourJ'ai des tableaux avec tous les départements françaisCeux ci sont répartis en 4 Zones : var Zone_1 = new Array Chifres aléatoires non répétés [ par n_lefebvre ] Salut,Je débute un peu dans Flash et ActionS. Je dévelope un clip qui doit attribuer 22 chiffres de maniere aléatoire a dans un liste en Array, mais i affiche_photos aléatoirement [ par kartoon ] Bonjour,Voilà j'ai un code qui va chercher des photos dans un fichier nommé "images" dans lequel se trouve 11 photos au format jpg, et qui pioche les Création en manipulation de clip en AS [ par ypauleau ] J'ai cherché sur le net et j'ai toujours pas compris, Voici mon problème : Je cherche à créer des instances d'un clip que j'ai créer dans la bibliothè Problème de chargement array [ par adramele ] Bonjour à tous !Je suis face à un soucis... je débute. Ce code va chercher une variable faite d'une séquence avec virgule dans un fichier php pour ens array.shift [ par kapac ] bonjour; j'ai un probleme avec shift si j'écris le code suivant: var damier:Array = new Array(1,2,3,4,5); var nombre:Object=damier.shift(); avec les Decplacement de clips en saccade [ par grenouilleAB ] Bonjour J'ai un problème de déplacament de clips en saccades. Les clip sont integrés dans la scène à partir de la bibliothède via attachMovie. Le prob array de classes??? [ par Jamesbound ] Bonjour,J'ai créé une classe disons:  PersonneJ'essais maintenant de l'inclure dans une collection de personne (ou autrement dit un Array de Personnes Problème Boutons, Array, et functions en AS3 [ par chillie ] Bonjour à tous.Je suis un train de réaliser un site internet sous flash. Pour des questions pratique de gestion du son je vais tout refaire en AS3 (). array [ par kapac ] bonjour;qui pourrait me renseigner ce qui ne marche pas ds le code suivant:mya = new Array();mya2 = new Array();var st:String;var y:Number=0;for(x=0;x


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,006 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales