Kommunauty
Connexion
Inscription
« Les Bases de Flash : Code : Actions sur la timeline

Les Bases de Flash : Code : Variables et textes

le 16 juin 2009 • Flash • par Dawlin

Salut salut, aujourd'hui globalement, on va apprendre à faire ça...

... en mieux.

Donc, dans la programmation, tout n'est que variable. Le nombre de vies dans Zelda est une variable, le nom de l'utilisateur est une variable, tout est une variable. Une variable est une donnée, et puisque c'est une donnée, elle peut varier.

Pour déclarer une variable la "vraie bonne manière des gens bien" c'est ça :

var nom:Type = contenu;

mais on ne s'en sert que rarement, si vous tapez

var nom = contenu;

Flash va reconnaître quand même le type, si vous tapez

nom = contenu;

Il va tout de même reconnaître le type de variable. Mais bon.

Dans les actions principales de votre scène, déclarez tout d'abord une variable a. On n'a pas réellement besoin de déclarer une variable pour pouvoir l'utiliser, comme en php ou en C/Cpp. Mais là on la déclare, c'est donc une variable "a" égale à 0 :

a = 0;

Flash va reconnaître tout de suite que c'est une variable, et de type "Number". Bien. Maintenant, faites :

a++;

Ceci est une incrémentation. C'est comme si j'avais marqué a = a +1; mais c'est c'est trop long, surtout si ma variable s'appelle nombreDeViesZeldaNiveau4.

Donc j'utilise ++ ou à l'inverse, --.

Notre variable prend donc +1...

On peut même mettre += 4 si on ne veut pas mettre 1

ou même -= 6 si on veut enlever 6

Et même ...

  • a += 7;
  • a -= 10;
  • a *= 12;
  • a /= 2;

On peut additionner soustraire multiplier diviser ce qu'on veut sur une variable de type "Number". Ce n'est pas le cas sur une variable de type "String" (HAHA)... Non, string veut dire "chaîne de caractère"... une phrase quoi.

Essayez donc de faire "Salut" + "Au revoir" ça ne va pas marcher. Enfin si, mais là c'est une autre histoire, cela devient de la concaténation... concaténation, pareil qu'en php ou autre, mais qui se fait ici comme une addition, c'est le couplage de deux strings ensemble.

Donc si

b = "salut"+"mon chou";

alors

b = "salutmon chou";

Note : ne pas oublier de mettre d'espaces.

donc, les deux types de variables les plus connus : Number et String. Plus tard nous apprendrons les Array() et là vous pourrez dire : J'ai une string dans l'array();

Donc, commençons. Sur notre animation ci-dessus, nous avons un champ de texte "de saisie" c'est à dire que quand vous faites un champ de texte, dans les propriétés vous avez :

Ici on choisit "texte de saisie" pour que les utilisateurs puissent entrer leur nom. Dans le champ d'occurrence, comme si c'était un symbole, on va lui donner "champ1". Et après, pour récupérer sa valeur, on fera

variableTexte = champ1.text;

C'est l'attribut .text qui contient sa valeur. C'est comme la propriété ._x en quelque sorte.

Donc à côté, je vais faire un champ de texte "dynamique" cette fois (le texte dynamique est un texte qui peut changer de contenu, le seul dans lequel on puisse afficher des variables). On lui donne comme occurrence "champ2" et on est partis, on se fait un petit bouton avec comme code :

//quand je clique
on(press){
//la variable "nom" est égale à la valeur du champ de saisie...
var nom = champ1.text;
//et j'attribue au champ dynamique cette valeur concaténée à un petit message de bienvenue
champ2.text = "Salut "+nom;
}

Donc vous savez lire le contenu d'un champ de texte, et l'écrire... Bien bien... vous pouvez vous en servir quand vous faites un code compliqué, pour écrire les variables dont vous voulez connaître la valeur pendant la manipulation... Ceci dit, il existe une fonction très utile au développeur, qui est "trace();" qui permet d'afficher sur le panneau de sortie quelque chose.

//par exemple, si la connexion a réussi je mets
trace("Connexion réussie !");
trace("Hello World");

//autre exemple, je veut savoir la valeur d'une variable
trace(maVariable);
trace(maVariable+7);

Note : seul le développeur, dans l'interface de flash, peut voir le résultat d'une fonction trace

Maintenant, passons aux champs qui sont en bas à gauche : le premier est plein, le deuxième est vide, il nous suffit en cliquant sur le bouton que le deuxième prenne la valeur du premier. On peut le faire soit directement soit en passant par une variable. Directement, c'est plus direct

champ2.text = champ1.text;

Trop simple. Attention, pour un texte long comme celui-ci, mieux vaut cocher l'option "texte multiligne" :

A droite, la variable s'incrémente (a++) quand on clique sur le bouton.

Nous avons un champ de texte dynamique assez spécial. Certes, on aurait pu mettre sur notre bouton

on(press){
a++;
champ.text = a;
}

Mais on utilise une particularité du champ de texte dynamique : il peut prendre automatiquement la valeur d'une variable !

On va donc remplir ce champ :

Ce champ qui oh comme c'est bizarre a pour intitulé "var"

Mise en forme de champ de texte

Ben oui, il fallait bien que je le case quelque part, et je pense que c'est là. Pour mettre en forme un texte/clip/bouton, vous pouvez utiliser, en plus d'autres petites options sympatoches prévues par défaut, l'onglet "filtres" :

Et ajouter ombre, rayonnement, flou...

Pour plus de précisions, contactez-moi par mp

Voilà, merci d'avoir suivi ce tutoriel qui s'inscrit dans la suite de tutoriels flash,

Dawlin

Les Bases de Flash : Code : Les array »


  
14 commentaires

Sympa, merci, tu te defonces toujours autant pour tes tutos

le 16 juin 2009

Mais je ne fais que mon devoir, mon choupichounet d'amour

le 21 juin 2009

Quel est le fou qui a mis les tutoriels "Les bases de flash pour débutants" en "difficile" que je l'étrangle ??

le 10 juillet 2009

Salut Dawlin,

Je cherche une explication et par google je suis tombé - peut être peux tu m'aider

Ma question est simple :

Voici l'exemple de ce que j'ai fait pour un client mais que je souhaite améliorer

lafamillebio.fr/bionews

dans l'ardoise s'affiche un texte que mon client saisie dans un fichier texte (ici texte.txt) et renvois par ftp

Je souhairerai animer ce texte (exemple : entrée par glissement ou rotation ou que sais je encore) et que le client n'ai pas à passer par le ftp qu'il puisse changer directement sur une autre page de son site ou directement sur la page elle même.

Mais voilà je suis pas fortiche avec la programmation le php , l'AS et je galére. Quand je suis mot à mot les forums - j'ai soit rien de rien soit undefined et encore le texte n'est pas animé.

j'apporte une précision :

Dans mon texte dynamique, j'ai mis texte comme variable

et dans ma timeline le code AS

loadVariablesNum("lefichiertxtsurserveur, 0)

Cela ne marche que quand le texte est dans l'anim globale pas dans un clip imbriqué et pas animé

as tu une solution simple voir un ti peu compliquée à m'apporter !

Merci de ta collaboration !

le 29 septembre 2010

Alors, pour ce qui est de la rotation, c'est pas possible avec un texte dynamique. Déjà ça c'est fait mais un glissement bien sûr, avec joie.

Je préfèrerais personellement charger le machin depuis un XML (ou un PhP déguisé), parce que tout ce qui est LoadVariables et tout le tintouin n'a bizarrement jamais marché chez moi, même si j'ai utilisé tous les exemples, des plus officiels au plus douteux...

Bref, je te renvoie ici :

http://kommunauty.fr/article-206-charger-html-ou-php-dans-un-fichier-flash

Et ou ici :

http://kommunauty.fr/article-374-creer-un-mini-site-en-flash-3-3

Mais sinon mon ordinateur est mort donc je ne peux pas te coder d'exemple spécial pour toi, avant... mars

Pour ce qui est du PhP et de la modification du texte, étant donné que ton texte sera chargé depuis un PhP, ce PhP peut charger un texte tout simplement écrit dans une base de données (et en parrallèle un formulaire PhP qui inscrit le texte dans la base de données), ou ce fichier est directement effacé puis réécrit par un formulaire PhP qui écrit ce texte...

En espérant t'avoir été utile, pour plus de renseignements n'hésite pas,

Dawlin

le 30 septembre 2010

Bonjour,

Avant tout, merci pour votre exemple. Je suis débutant en as2.

Dans l'exemple "Salut" + "...." Comment faire pour que le clip généré avec la variable récupérée reste sur la scène et que lorsque l'on rentre à nouveau un texte dans le champs de saisie, le nouveau clip ne remplace pas le précédent et reste lui aussi sur la scène principale. Et cela ainsi de suite.... Car je souhaite ensuite ajouter une fonction drag sur chacun des clips généré, afin de les avoir tous sur la scène et pouvoir ainsi les déplacer.

Merci pour votre réponse.

le 16 février 2011

Alors, le fait qu'un clip se supprime quand tu en attaches un autre, c'est parce que tu les mets sur le même calque (je pense).

Un calque, c'est une "couche", en fait tu vois bien que tes clips se superposent, certains en arrière-plan, certains au premier plan.

Les clips créés directement sur la scène peuvent être organisés en calques manuellement (dans la timeline), mais les clips "attachés" dynamiquement par code ont leur propre fonctionement :

Pour attacher un clip :


var clp:Movie Clip = this.attachMovie("occurence_bibliotheque","nouveau_nom",4);

Ici le calque est ... 4 !

Donc si tu le remplace par cette fonction : getNextHighestDepth() ça devrait marcher et ton code ressemblera à ça :


var clp:Movie Clip = this.attachMovie("occurence_bibliotheque","nouveau_nom",this.getNextHighestDepth());

Voilivoilou... j'espère que ça marche

le 16 février 2011

Bonjour Dawlin, merci pour cette réponse ultra rapide !

Malheureusement cela ne fonctionne pas.

Voici le code que j'utilise sur le bouton (Ce bouton se trouve dans un clip jeu qui lui se trouve dans un clip total)

th = this; 

btngo.onRelease = function(){
th.attachMovie("nodes", "nodes", 10, {_x:100, _y:-300});

th.attachMovie("ovni", "ovni", 1 , {_x:600, _y:100});
profondeur ++;

{

    var nom = saisie.saisie.text;
    ovni.yo.text = "Salut " + nom;

var mess = mot.mot.text;
    ovni.yomess.text = "" + mess;


}

ovni.onPress = function() {
startDrag(this);
};
ovni.onRelease = ovni.onReleaseOutside=function () {
stopDrag();



nodes.onPress = function() {
startDrag(this);
};
nodes.onRelease = ovni.onReleaseOutside=function () {
stopDrag();
}

};

}

et voici le lien pour que vous puissiez voir mon projet :

projet

Merci encore pour votre aide très précieuse.

le 17 février 2011

Bon alors...

Ecoute bien, c'est assez compliqué :

Tous ces clips sont générés par une boucle ou quelque chose de ce type. Donc ça a cette tête :


for(i=0;i<nombreDeClipsSouhaites; i++){
   // code pour attacher le clip.
}

Le truc c'est que chaque clip aura la même tête, "nodes" mais pas le même nom, sinon il y aura des doublons.

Donc, on va le changer de calque ET de nom en lui donnant un nom qui dépend de la variable i. Genre "nodes"+i. Problème, comment je peux après lui donner toutes mes indications de drag et de position si son nom n'est pas connu ?

On va le stocker dans une variable :


for(i=0;i<nombreDeClipsSouhaites; i++){
   // code pour attacher le clip :
        var monClip:MovieClip = this.attachMovie("nodes","n"+i,this.getNextHighestDepth());
        monClip._x = 100;
        monClip._y = -300;

  // Attention, pour le drag :
       monClip.onPress = function(){
           startDrag(this);
        }
// Et [b]seulement maintenant[/b] on referme la boucle.
}

Essaie déjà ça, pour voir ce que ça donne, puis ensuite adapte

P-S : N'hésites pas à poser tes questions dans le forum au lieu d'un commentaire, parce que les commentaires deviennent surchargés

le 17 février 2011

Bonjour

j'ai un formulaire en AS2 avec des composants textinput qui marche et qui envoie par mail les résultats

Je voudrais récupérer dans des champs de texte dynamiques, les valeurs saisies dans le texte input

Est-ce possible ?

Merci de répondre

le 13 octobre 2012

Salut,

Pour lire un champ de type textinput et d'occurrence "myTxt" tu utilises myTxt.text :


trace(myTxt.text);
a = myTxt.text;
le 13 octobre 2012

Merci de ta réponse mais je ne comprends pas

Mon champ de texte composant est crée, il s'appelle nom_ti

Que dois-je faire si je veux le voir à un autre endroit que là où il est saisi,

le 13 octobre 2012

Quand j'essaie de faire ton exercice, j'ai des pointillés pour le champ texte saisie et le champ texte dynamique, et rien de visible sauf le bouton

le 13 octobre 2012

Je n'ai pas compris. voyons cela en MP ok ?

le 13 octobre 2012



Ajoute un commentaire !

Ajouter une image... Trouvée sur internet » De mon PC »
Adresse URL :
Adresse de la page de la vidéo :
Taille du texte :
Couleur du texte :

Article lu 7098 fois.