Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FAIRE TOURNER UN TABLEAU (ARRAY)


Information sur la source

Catégorie :ActionScripts Classé sous : array, rotation, tableau, push-pop, shift-unshift Niveau : Débutant Date de création : 20/11/2007 Date de mise à jour : 20/11/2007 10:35:16 Vu : 5 006

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


Description

Il est parfois utile ou nécessaire de faire 'tourner' un Array, c'est à dire de décaler tout le contenu du tableau vers la gauche (premier élément devient dernier, 2eme devient premier,...) ou vers la droite.
Voici une methode très simple pour réaliser cette manipulation.

 

Source

  • var my_array:Array=['1','2','3','4','5'] //le tableau que l'on veut faire tourner
  • // SHIFT ARRAY TO RIGHT (dernier élément devient le premier)
  • my_array.unshift(my_array.pop());
  • trace(my_array.join('-'));
  • // SHIFT ARRAY TO LEFT (premier élément devient le dernier)
  • my_array.push(my_array.shift());
  • trace(my_array.join('-'));
  • et pour ceux qui aiment les classes (comme moi)
  • class arrayRotation {
  • // Private constructor
  • private function arrayRotation() {}
  • // Static function Rotate
  • // theArray : l'Array qu'on souhaite manipuler
  • // si theArray n'est pas défini, une nouvelle Array vide est renvoyée
  • // _direction : chaine de caractère indiquant la direction ('left' ou 'right')
  • // si _direction non défini ou ni 'left' ni 'right' l'Array d'origine est renvoyée
  • static function Rotate(theArray:Array,_direction:String):Array
  • {
  • if (theArray==undefined) return new Array();
  • _direction=_direction.toUpperCase();
  • // Rotation of array
  • switch(_direction)
  • {
  • case 'RIGHT':
  • // SHIFT ARRAY TO RIGHT
  • theArray.unshift(theArray.pop());
  • break;
  • case 'LEFT':
  • // SHIFT ARRAY TO LEFT
  • theArray.push(theArray.shift());
  • break;
  • }
  • return theArray
  • }
  • }
var my_array:Array=['1','2','3','4','5'] //le tableau que l'on veut faire tourner
// SHIFT ARRAY TO RIGHT (dernier élément devient le premier)
my_array.unshift(my_array.pop());
trace(my_array.join('-'));
// SHIFT ARRAY TO LEFT (premier élément devient le dernier)
my_array.push(my_array.shift());
trace(my_array.join('-'));

et pour ceux qui aiment les classes (comme moi)

class arrayRotation {
	// Private constructor
	private function arrayRotation() {}
	// Static function Rotate
	// theArray :   l'Array qu'on souhaite manipuler
	//              si theArray n'est pas défini, une nouvelle Array vide est renvoyée
	// _direction : chaine de caractère indiquant la direction ('left' ou 'right')
	//              si _direction non défini ou ni 'left' ni 'right' l'Array d'origine est renvoyée
	static function Rotate(theArray:Array,_direction:String):Array
	{
		if (theArray==undefined) return new Array();
		_direction=_direction.toUpperCase();
		// Rotation of array
		switch(_direction)
		{
			case 'RIGHT':
				// SHIFT ARRAY TO RIGHT
				theArray.unshift(theArray.pop());
				break;
			case 'LEFT':
				// SHIFT ARRAY TO LEFT
				theArray.push(theArray.shift());
				break;
		}
		return theArray
	}
}

Conclusion

Ce n'est pas vraiment une source, c'est plus un petit truc de programmation...
 

Historique

20 novembre 2007 10:35:16 :
correction syntaxe

Commentaires et avis

signaler à un administrateur
Commentaire de top30 le 21/11/2007 09:10:32

J'aime bien l'edée de faire tourner dans un sens, ou dans l'autre. Chose ququel j'avais pas penser.
Mais j'aurais plutot ecris la classe comme suit :

// AS2
class [monChemin].ArrayRotation
{
   public function ArrayRotation ($aWork : Array, $nSens : Number, $nTime : Number )
   {
      while (nTime --)
      {
         switch ($nSens )
         {
            case 1 :
            $aWork.unshift ($aWork.pop ());
            break ;
            //
            default :
            $aWork.push ($aWork.shift ());
         }
      }
   }
}
//

// AS3
package [monPackage]
{
   public class ArrayRotation
   {
      public function ArrayRotation ($aWork : Array, $nSens : int = 1, $nTime : int = 1 )
      {
         while ($nTime --)
         {
            switch ($nSens )
            {
               case 1 :
               $aWork.unshift ($aWork.pop ());
               break ;
               //
               default :
               $aWork.push ($aWork.shift ());
            }
         }
      }
   }
}


//  Utilisation //
   var test : Array = ('123456').split ('');
   trace (test );
   // 1,2,3,4,5,6
   //
   new ArrayRotation (test);
   trace (test );
   // 6,1,2,3,4,5
   //
   new ArrayRotation (test, -1, 3 );
   trace (test );
   // 3,4,5,6,1,2

signaler à un administrateur
Commentaire de top30 le 21/11/2007 09:11:28 7/10

J'aime bien l'idée :
7/10

signaler à un administrateur
Commentaire de zoolivier le 21/11/2007 15:00:50

oui, bravo original et apporteur d'idée

signaler à un administrateur
Commentaire de Girou le 22/11/2007 08:52:46

@TOP30 : Excellente idée !!! J'ai développé cette 'astuce' dans une application ou je ne devais que déplacer d'une unité vers la gauche ou la droite mon tableau, mais ta proposition est nettement plus générique. Je prend !!! 10/10 :o)

signaler à un administrateur
Commentaire de dj_ouf le 24/11/2007 01:09:57

nikel pour un tetris! rotation de pièces!

signaler à un administrateur
Commentaire de Improve le 27/11/2007 23:46:21

Fonctionnelle avec si peu de lignes. C'est ok, je l'ai bien saisi. Que dire des params . . . et le switch(){}. Merveilleux. @+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ARRAY DYNAMIQUE PRISE DE TETE [ par geus91 ] slt :)je voudrais savoir si quelquun serait comment faire pour envoyer le contenu d'un tableau array, dans un fichier txt et ensuite recharger le cont tableau a plusieurs dimensions [ par lilyvirus ] avec les tableauw on peux faire tout bettement     answer= new Array();     answer[0]="coucou"     trace Problème de menu [ par Aleanar ] BonjourJe voudrais créer un menu en mettant dans deux tableau les nom d'occurence des boutons et les les liens de chaque boutons.Sauf que ça ne marche text field variable dans un tableau? [ par knas74 ] nasbonjour à tous j'aimerais savoir comment peut-on insérer les noms de variables de type texte dynamique dans un tableauje vous soumets mon code, le A propos des tableaux [ par malicious06 ] Bonjour, 1) Est-ce que le New est obligatoire lorsqu'on créer un tableau ? J'ai essayé: tab=Array(10); tab[0]="....."; . . . tab[9]="....... galerie images ds un array avec suppression images aléatoire [ par stephke ] hello tout le monde!!!voila j'ai 150 petites phtos sur ma scène que j'ai importés et déposées manuellement sur la scène (pr raisons esthétiques).j'aim Vider un Array [ par cguiltaz87 ] Bonjour tout le monde,    j'ai un petit soucis pour vider un tableau. Ce n'est qu'un tableau à une dimension, et après avoir Array et suppression d'élément [ par inaden ] Bonjour,voila, j'ai un tableau (array) qui s'appelle diag, un nombre aléatoire qui s'appelle sorti. J'ai essayé de virer l'élément du tableau correspo élimination d'un élément de array (as3) [ par inaden ] Bonjour à tous et Bonne AnnéeVoilà le pb que j'ai :Le but de l'anim est un jeu de question... appel des question réponse par xml... tout va bienMise e Affichage - Tableau [ par Cath_ ] Bonjour,J'aimerais créer  un menu d'affichage (ex : comme un menu d'imprimante).  C'est un menu que pour naviguer à l'intérieur il faut appuyer sur de


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 1,108 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.