[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Programmation
> ActionScript / Flash / Flex
> Introduction à l'ActionScript > Les bases de l'actionscript > Les Conditions
> Lecture du tutoriel
Les Conditions
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Les conditions sont à la base de tout langage de programmation. En effet, la seule chose qu'on peut demander à une machine c'est de faire ça si telle ou telle condition et remplie.
On va donc voir dans ce chapitre comment "tester" une variable, et exécuter une action selon le résultat du test !
Vous m'excuserez de ne pas suivre un ordre "intuitif", mais avant de commencer à utiliser les conditions, je veux que vous les compreniez. Et pour cela nous allons faire appel à un nouveau type de variable : les variables booléennes, ou Boolean en anglais.
Vous avez dit booléen ?
C'est le type de variable le plus simple. Il n'a que deux valeurs possibles :
true ou
false (vrai ou faux en français).
Déclarons une variable booléenne, comme d'habitude, 3 techniques possibles :
Code : Autre1
2
3
| var mabool:Boolean = new Boolean(true); //Méthode complète
var mabool:Boolean = false; //Méthode plus simple, mais correcte
mabool = true; //Méthode courte, moins stricte, car on ne donne pas le type de variable |
Maintenant, imaginons que nous ayons deux variables numériques, et que nous voulions savoir si elles ont la même valeur ou non.
Code : Autre1
2
3
4
5
| var mabool:Boolean = new Boolean(); // On définit une variable booléenne. En l'absence de valeur, elle prend d'elle même la valeur false
var nombre_a:Number = 100;
var nombre_b:Number = 50;
mabool = (nombre_a==nombre_b); // On assigne à mabool la valeur résultante du test
trace(mabool); |
Et vous allez voir apparaître dans la fenêtre de sortie :
false. Ce qui est tout à fait logique puisque 100 est différent de 50.
Vous avez pu constater qu'entre
nombre_a et
nombre_b on a intercalé l'opérateur
==. Cet opérateur permet de tester l'égalité entre deux variables.
Maintenant, refaisons le test de façon un peu plus rapide, sans passer par les variables :
Code : Autre1
2
3
| var mabool:Boolean = new Boolean(); // On définit une variable booléenne. En l'absence de valeur, elle prend d'elle même la valeur false
mabool = (100==100); // On assigne à mabool la valeur résultante du test
trace(mabool); |
Et là, miracle, la fenêtre sortie nous gratifie d'un beau
true.
Conversion vers Number ou String
Chose utile à savoir, mais qui ne devrait pas nous gêner puisqu'on code proprement en indiquant le type de chaque variable, pour Flash
true et
1 et
false et
0 sont la même chose.
Ainsi, testez donc cette ligne :
Code : Autre1
2
| var mabool:Boolean = true;
trace(mabool+mabool); // Horreur, on additionne deux booléens |
Mais Flash ne se laisse pas démonter, et nous affiche
2.
En effet Flash va adapter la variable selon les besoins. Là il s'agit d'un calcul numérique, il va donc modifier le
true en
1. Ce qui explique le 2.
Et pour transformer le true en "true" et le false en "false" ?
Il faut utiliser la méthode
toString() qui va transformer votre variable en chaîne de caractères.
Voilà ce qui ne marchera pas :
Code : Autre1
2
3
4
| var mabool:Boolean = true;
var monstring:String = "valeur : ";
monstring+=mabool; // on concatène un String avec un Boolean -> aïe caramba
trace(monstring); |
Un beau message d'erreur d'incompatibilité des types s'affichera à vous.
Voilà ce qui fonctionnera :
Code : Autre1
2
3
4
| var mabool:Boolean = true;
var monstring:String = "valeur : ";
monstring+=mabool.toString(); // on concatène deux String -> no problemo
trace(monstring); |
Nous avons donc vu le célébrissime
== qui permet de tester l'égalité. Passons à du plus lourd :
- 1. N'est pas égal à
- 2. "Plus petit que" - "Plus grand que"
- 3. "Plus petit ou égal à" - "Plus grand ou égal à"
- 4. "Égalité stricte" (et inégalité stricte)
1. "N'est pas égal à"
Voilà l'exact opposé à
==, je parle bien sûr de
!=.
Cet opérateur permet de vérifier que les valeurs de deux variables sont bien différentes.
Code : Autre1
2
3
| var mabool_a:Boolean = true;
var mabool_b:Boolean = false;
trace( mabool_a!=mabool_b); |
Ce qui renvoie
true, car
true est différent de
false.
On aurait pu aussi essayer cet opérateur avec des valeurs numériques ou des chaînes de caractères.
2. "Plus petit que" - "Plus grand que"
Il serait intéressant de pouvoir tester si un nombre est plus grand qu'un autre. Pas besoin de chercher dans le manuel de Flash l'opérateur, c'est le même que dans votre cours de Maths.
L'opérateur
< correspond en français à "plus petit que" et à l'inverse, l'opérateur
> correspond à "plus grand que".
Cela va nous permettre de comparer deux valeurs numériques. Testez chez vous ces différents lignes :
Code : Autre1
2
3
4
| trace (100<50); // Renvoie false, car 50 n'est pas plus grand que 100 !
trace (50<100); // Renvoie true, car 50 est plus petit que 100
trace (100<100); // Renvoie false, car 100 n'est pas plus petit que 100, mais égal
trace (500>10); // Renvoie true |
Intéressant, non ?
Mais je suis sûr qu'un détail vous a plus intéressé que le reste : le test sur
100<100
3. "Plus petit ou égal à" - "Plus grand ou égal à"
Il s'agit cette fois de l'opérateur
>= ou à l'inverse
<=
Testons :
Code : Autre1
2
| trace (100>=50); // Renvoie true, car 100 plus grand que 50
trace (100>=100); // Renvoie true, car 100 égal à 100 |
Et si on utilise > ou < avec des chaînes de caractères ?
Alors Flash comparera en fonction de la place de la lettre dans l'alphabet (en fait selon la place de la lettre dans la table des caractères ASCII (
TABLE ASCII).
Quelques exemples enrichissants :
Code : Autre1
2
3
| trace("A"<"B"); //true car A avant B dans l'alphabet
trace("a"<"B"); //false car pour Flash, les majuscules sont avant les minuscules.
trace("ab"<"ac"); //true car b avant le c dans l'alphabet |
4. "Égalité stricte"
Voilà un opérateur qu'on utilise assez rarement, mais qui peut se révéler utile.
Pour comprendre son intérêt, testons cela :
Code : Autre1
2
3
| var mabool:Boolean = true;
var monnombre:Number = 1;
trace(mabool==monnombre); |
Ce qui nous renvoie
true, car comme on l'a vu précédemment, pour Flash le booléen
true équivaut au numérique
1.
Mais maintenant tapons :
Code : Autre1
2
3
| var mabool:Boolean = true;
var monnombre:Number = 1;
trace(mabool===monnombre); |
Ce qui nous renvoie
false ! L'opérateur
=== (oui, ça en fait beaucoup

) va non seulement comparer l'égalité des valeurs contenues dans les variables
mais aussi l'égalité des types des variables. Or ici, le type Boolean est différent de Number, d'où le
false.
Existe-il une inégalité stricte ?
Eh oui, elle est assez rarement utilisé :
!==
Cet opérateur renverra
true si les valeurs
ou les types sont différents.
C'était le petit tour des opérateurs de conditions les plus usités.
Eh oui, tout comme les nombres, les booléens ont leurs opérations.
Pour les nombres on a 4 opérations, qu'on peut réduire à 2 (la somme et le produit).
Eh bien chez les booléens c'est pareil, on a deux opérations :
ET et
OU.
La logique binaire (c'est-à-dire les opérations sur les booléens) pourrait faire l'objet de plusieurs chapitres, je vais donc faire simple et n'expliquerai pas toutes les possibilités de la logique binaire.
Nous nous en tiendrons aux bases, c'est-à-dire :
1. Opposé
2. ET
3. OU
1. "Opposé"
Celui là, il est bien pratique, il s'agit du petit
!
Ce dernier inverse tout simplement la valeur d'une variable booléenne.
Par exemple :
Code : Autre1
2
| var mabool:Boolean = false;
trace(!mabool); // Renvoie true |
ou encore
Code : Autre1
2
| var mabool:Boolean = true;
trace(!mabool); // Renvoie false |
2. "ET"
Vous voulez vérifier qu'une variable est égale à telle valeur ET une autre est égale à telle autre valeur ?
Utilisez l'opérateur
&&
Imaginez, vous êtes directeur d'une boîte branchée. A chaque client vous demandez la variable
age et
argent. Vous ne voulez laisser rentrer (
true) que les majeurs et ceux qui ont plus de 50 ¬.
En semi-français on aurait :
(age PLUS GRAND OU EGAL 18) ET (argent PLUS GRAND 50)
Ce qui nous donne en Actionscript :
(age>=18) && (argent>50)
Un petit exemple :
Code : Autre1
2
3
| var age:Number = 10;
var argent:Number = 100;
trace((age>=18) && (argent>50)); |
Le jeune garçon a bien l'argent, mais n'est pas majeur, donc éjection.

Flash renvoie false.
3. "OU"
Opérateur :
|| (Ctrl+alt+6 pour les plus zéros d'entre nous).
Maintenant, imaginez-vous chef de casting

pour la Zéros Académie.
Vous cherchez un Zéro qui soit possède un Q.I. inférieur au Q.I. d'une limace,
ou alors un zéro qui possède une ancienneté supérieure à 3 ans sur le SDZ (un geek en somme

).
En semi-français :
(qi du zéro PLUS PETIT QUE qi de la limace) OU (ancienneté PLUS GRANDE QUE 3)
En Flash :
(zero_qi < limace_qi) || (zero_ancien > 3)
Et le petit exemple qui va bien

:
Code : Autre1
2
3
4
| var zero_qi:Number = 90;
var limace_qi:Number = 2;
var zero_ancien:Number = 3.5;
trace((zero_qi < limace_qi) || (zero_ancien > 3)); |
Cela nous renvoie
true, car le Zéro a beau posséder un QI approchant de la moyenne mondiale, son ancienneté le sauve.
Voilà c'était tout sur les opérations de logique booléenne. Sachez que si vous aimez vous triturer les méninges, vous pouvez combiner toutes ces opérations et même démontrer que le
ET possède les mêmes propriétés que la multiplication (distributivité...) et le
OU les mêmes que la somme.
On arrive enfin au lourd.

Regardons maintenant comment utiliser tout ce que nous avons appris sur ses booléens !
- 1. if
- 2. if else
- 3. if else if
- 4. les ternaires
1. if
Intéressons-nous à la structure conditionnelle la plus classique :
if
(
if veut dire
si en français pour les plus anglophobes d'entre nous

)
L'instruction
if va vérifier si une variable booléenne est vraie, si c'est le cas, elle va effectuer une action.
Vous pouvez voir la structure dans l'exemple ci-dessous. Entre parenthèses, on met la variable booléeene qui va être testée : ici c'est
mabool. Dans le bloc d'instructions délimité par les accolades, on va écrire l'action qui se produira, si la variable booléenne est vraie.
Code : Autre1
2
3
| if (mabool) {
//l'action à effectuer si mabool vaut true
} |
Petit exemple facile :
Code : Autre1
2
3
| if (50<100) {
trace("en effet, 50 plus petit que 100");
} |
2. if else
else signifie en français
sinon
Il va nous permettre d'ajouter une action dans le cas où la condition renvoie
false
Code : Autre1
2
3
4
5
| if (50>100) {
trace("si la condition était vraie");
} else {
trace("mais en fait elle est fausse");
} |
Ce code exécutera l'action contenue dans le
else car la condition renvoie
false
3. if else if
Et si on a plusieurs cas à éplucher ?
Code : Autre1
2
3
4
5
6
7
8
9
10
11
12
| var monnombre:Number = 2;
if (monnombre==0) {
trace("monnombre vaut 0");
} else if (monnombre==1) {
trace("monnombre vaut 1");
} else if (monnombre==2) {
trace("monnombre vaut 2");
} else if (monnombre==3) {
trace("monnombre vaut 3");
} else {
trace("je sais pas ce que vaut monnombre");
} |
Ce code affichera
"monnombre vaut 2".
Mais amusez-vous à changer la valeur de
monnombre pour comprendre le système.
La dernière action
else sera exécutée si aucune condition précédente s'est révélée vraie.
N'oubliez pas que les tests s'effectuent dans l'ordre. Et Flash s'arrêtera à la première condition vraie, il n'ira pas voir plus loin.
4. les ternaires
Voilà une structure conditionelle qui va nous faire gagner du temps
Prenons cet exemple :
Code : Autre1
2
3
4
5
| if (monnombre==0) {
trace("monnombre vaut 0");
} else {
trace("monnombre ne vaut pas 0");
} |
Ca nous fait : 5 lignes !
En ternaire :
Code : Autre1
| (monnombre==0) ? trace("monnombre vaut 0") : trace("monnombre ne vaut pas 0"); |
Ca fait : 1 ligne
Voici comment se présente un ternaire structurellement :
Citation : Strucuture ternaireCONDITION ? ACTION SI CONDITION VRAIE : ACTION SI CONDITION FAUSSE ;
Maintenant un petit exercice difficile.
Vous vous souvenez de l'opérateur
! qui permet d'inverser la valeur d'un booléen ?
Et bien je veux qu'on écrive une ligne de code qui fasse exactement la même chose.
Réponse :
Secret (cliquez pour afficher)Code : Autre1
2
3
| var mabool:Boolean = false;
mabool = (mabool==true) ? false : true;
trace(mabool); // affiche true |
Comment ça marche ?
Pour comprendre, il suffit de remonter d'un cran dans la simplification de l'expression, on va "développer" :
Code : Autre1
2
3
| mabool = (mabool==true) ? false : true;
// Peut aussi s'écrire
(mabool==true) ? mabool=false : mabool=true; |
Ce code a le même effet.
Ainsi que celui ci :
Code : Autre1
2
3
4
5
| if (mabool==false) {
mabool = true;
} else {
mabool = false;
} |
Voilà vous savez tout sur les conditions. J'ai omis de parler de l'instruction
switch, car elle est rarement utilisée, et peut souvent s'éviter en utilisant un outil plus pratique : les boucles ! Que nous verrons au prochain chapitre. Cela dit, si vous tenez à comprendre le
switch, allez lire les tutos sur les conditions avec les langages C++ ou PHP : le système est le même. L'aide de Flash vous sera aussi très utile.
Valeur Booléenne et correspondance numérique
| Valeurs | Correspondance numérique |
|---|
| false |
0 |
| true |
1 |
L'inverse n'est pas complètement vrai. Le
0 correspond bien à
false, mais
tous les autres chiffres correspondront à un
true dans une condition.
Opérateurs de test
| Opérateur | Signification | Vrai si ... | Faux si ... |
|---|
| |
|
|
|
== |
égal à |
les valeurs sont égales |
les valeurs sont différentes |
!= |
non égal à |
les valeurs sont différentes |
les valeurs sont égales |
| |
|
|
|
=== |
strictement égal à |
les valeurs ET les types sont égales |
les valeurs sont différentes
les types sont différents |
!== |
strictement non égal à |
les valeurs sont différentes
les types sont différents |
les valeurs ET les types sont égales |
| |
|
|
|
A < B |
plus petit que |
si la valeur de A est plus petite que la valeur de B |
si la valeur de A est plus grande que la valeur de B
si la valeur de A est égale à la valeur de B |
A > B |
plus grand que |
si la valeur de A est plus grande que la valeur de B |
si la valeur de A est plus petite que la valeur de B
si la valeur de A est égale à la valeur de B |
| |
|
|
|
A <= B |
plus petit ou égal à |
si la valeur de A est plus petite que la valeur de B
si la valeur de A est égale à la valeur de B |
si la valeur de A est plus grande que la valeur de B
|
A >= B |
plus grand ou égal à |
si la valeur de A est plus grande que la valeur de B
si la valeur de A est égale à la valeur de B |
si la valeur de A est plus petite que la valeur de B
|
Opérateurs booléens
| Opérateur | Signification | Ce qui se passe ... |
|---|
| |
|
|
!A |
opposé |
A prend la valeur opposée. false devient true et true devient false |
A && B |
ET |
Condition sur A ET sur B. Les deux doivent valoir true pour que le ET renvoie true |
A || B |
OU |
Condition sur A OU sur B. Un des deux doit valoir true pour que le OU renvoie true |
Structures
Code : Autre1
2
3
4
5
| if (condition) {
//Si condition est vraie
} else {
// Si condition est fausse
} |
Code : Autre1
2
3
4
5
6
7
| if (condition) {
//Si condition est vraie
} else if (condition2) {
//Si condition2 est vraie
} else {
// Si condition et condition2 sont fausses
} |
Code : Autre1
| (condition) ? /*si vraie*/ : /* si faux */ ; |