Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1057 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3 - newbies] Mes questions pour bien débuter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[AS3 - newbies] Mes questions pour bien débuter

n°1827076
abais
Posté le 15-12-2008 à 08:53:40  profilanswer
 

Bonjour à tous ! (Oh, Zed, merci d'être venu !)
Comme certains le savent, je me suis lancé dans l'Action-Script, mais n'ayant eu qu'une formation de base, je suis plutôt limité dans mes possibilités.
J'arrive très souvent à solutionner mes défis, mais je chie un code qui en fera vomir plus d'un, alors pour m'améliorer, je fais appel à vous.
Ici sera donc ma cabane à question. Merci à tous ceux qui s'y incrusteront
 
Comment faire pour "détecter" le changement d'une valeur de variable proprement (Y a t-il un Listener magique ?)
En gros, à chaque fois qu'une variable change, je veux lancer une fonction.
 
J'ai bricoler quelque chose de fonctionnel, mais surement lourd pour le CPU :

Code :
  1. //Initialisation
  2.   var maVariable:int = 1 // valeur de départ
  3.   var Current_maVariable:int = maVariable;
  4.   var testChange:String; // var inutile => pour un test
  5.  
  6. // Un evt EnterFrame, appele une fonction contenant :
  7.  
  8. if(maVariable != Current_maVariable){
  9.   testChange = "La variable vient de passer de "+Current_maVariable+" à "maVariable;
  10.   trace (testChange);
  11.   Current_maVariable = maVariable;


 
Voila, des surveillants comme ça il m'en faut 5 ou 6, donc, pas très propre non ?...


Message édité par abais le 15-12-2008 à 18:46:37

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
mood
Publicité
Posté le 15-12-2008 à 08:53:40  profilanswer
 

n°1827078
gatsu35
Blablaté par Harko
Posté le 15-12-2008 à 09:04:37  profilanswer
 

Ben normalement quand on programme bien en AS3,
ta varible est private, et ce sont tes getters et setter qui sont publics.
 
à partir de ce moment là tu peux via le setter lancer un event pour signaler que ta variable a été changer.
 

Code :
  1. public class test {
  2.     private var _maVariable:int = 1 // valeur de départ
  3.     public function get maVariable():int {
  4.         return _maVariable;
  5.     }
  6.     public function set maVariable(maVariable:int):void {
  7.         if (_maVariable==maVariable)
  8.             return;
  9.         _maVariable=maVariable;
  10.         trace('ma var a changé')
  11.     }
  12.  
  13. }

n°1827080
abais
Posté le 15-12-2008 à 09:09:39  profilanswer
 

Thx, je vais aussi tôt me renseigner sur la notion de Getters / Setters que je ne conceptualise pas trop.


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1827082
gatsu35
Blablaté par Harko
Posté le 15-12-2008 à 09:10:42  profilanswer
 

Bah apres pour utiliser ta variable c'est comme d'hab :

 

var obj:Test = new Test();
obj.maVariable = 3;

 

>>> la variable a été changée


Message édité par gatsu35 le 15-12-2008 à 09:54:39
n°1827086
abais
Posté le 15-12-2008 à 09:31:55  profilanswer
 

Mwarf, je lis plein de truc sur get / set mais je ne comprend pas trop, dsl, j'ai encore du chemin.


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1827777
Zedlefou
In cabbage we trust !
Posté le 16-12-2008 à 05:54:25  profilanswer
 

Mais t'as essayé l'exemple de Gatsu ?

 

Le get/set, tu l'utilises tout les jours, sans le savoir.
Ca sert a definir ou recuperer la valeur d'une variable.

 

Exemple :
var monClip = new MovieClip();
monClip.x = 3; (set)
trace(monClip.x) (get)

 

De son coté, AS comprend que tu crees un objet MovieClip.
Si tu vas dans l'aide a MovieClip et que tu regardes la proprieté 'x' (il faut que tu affiches les proprietés publics hérités pour ca) http://livedocs.adobe.com/flash/9. [...] ect.html#x , tu vas voir qu'il est ecrit : [read-write] (dsl j'ai la version anglaise)
Donc, c'est une propriété que tu peux lire et ecrire. (get & set)
D'ailleurs si tu regardes bien l'aide, il te le precise:
public function get x():Number
public function set x(value:Number):void

 

Ce qui te permet au passage de savoir ce que va retourner ta methode.
Dans le cas du get, il te retourne un nombre (ex: trace(monclip.x) // display "100" )
Dans le cas du set, ca ne retourne rien, mais tu dois lui passer un parametre (un nombre)

 

Ca parait simple parce que c'est MovieClip et c'est la premiere classe qu'on apprend quand on ouvre Flash. Mais dans les classes plus compliqués, c'est bien de savoir a l'avance ce que ca renvoi et ce qu'il faut lui envoyer.

 

Des fois tu n'as que le get
http://livedocs.adobe.com/flash/9. [...] tml#mouseX

 

Tu ne peux pas attribuer de variable a ta propriété.

 

Bref, pour revenir a ton cas, dans la classe MovieClip, quand tu modifies le x, tu utilises un 'set', et ca deplace automatiquement ton clip sur la scene.
Action > Reaction. Et c'est ce que tu veux.

 

Action monObj.maVar = 3;

 

Reaction "Vous avez changé la variable"

 

Donc t'as pas besoin de plus que l'exemple de Gatsu ...


Message édité par Zedlefou le 16-12-2008 à 05:55:16

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1827885
abais
Posté le 16-12-2008 à 11:57:59  profilanswer
 

Ok, ça commence à rentrer, mon pépin c'est que je me force à utiliser l'AS3 pour PV3D, et il faut donc que je m'habitue à sortir le code dans une classe. Ça vous parait surement con, mais c'est pas évident pour moi, je vous remercie d'ailleurs de m'y consacrer de votre temps [:romf]...
J'accuse la tolérance de l'as2 de m'avoir donné de mauvaises habitudes... [:piksou]


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3 - newbies] Mes questions pour bien débuter

 

Sujets relatifs
Caster un SQLResult() en AS3 avec SQLite et autres questions...Diverses questions sur l'art de programmer correctement
Questions sur le synchronizedquestions pour cré site internet
[Livre] pour bien commencer avec ORACLEcomment bien gérer les parametres de fonctions en bash ?
bien placer un message d'erreur dans un formulaireSoucis réalisation portfolio en AS3 : plusieurs MouseEvent
[PHP] timeout 0 dans le php.ini, quelques questions 
Plus de sujets relatifs à : [AS3 - newbies] Mes questions pour bien débuter


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR