Typage strict pour parametres de fonction : question sur cas précis

Typage strict pour parametres de fonction : question sur cas précis - Flash/ActionScript - Programmation

Marsh Posté le 02-07-2007 à 21:42:33    

Bonjour à tous,
 
Je suis en train de finaliser un proto de déplacement, qui peut accepter en parametres:
-soit une série de coordonnées x,y et timings stoquées dans des Arrays.
-soit les coordonnées et timing d'un unique point.
 
J'ai utilisé le typage stricte pour les parametres, puis j'effectue un test de type pour adapter aux deux possibilitées.
Jusqu'ici ça n'as pas l'air de faire broncher flash, et la fonction s'execute bien dans les deux cas, mais cette méthode me parais assez peu...catholique  :whistle:  
 
Y'as-il une méthode plus logique à adopter dans ce genre de cas?
 
 
MovieClip.prototype.goTo = function(xTab:Array, yTab:Array, dTab:Array, loop:Number) {
 if (loop == undefined) {
  loop = 1;
 }
 var test:Array = new Array();
 if (typeof (xTab) != typeof (test)) {
  var loopN:Number = 2;
  var xpos = xTab;
  var ypos = yTab;
  var d = dTab;
 } else {
  var loopN:Number = loop*xTab.length;
  var xpos = xTab.shift();
  var ypos = yTab.shift();
  var d = dTab.shift();
 }
 
             ...
 
 
Question subsidiaire, y'a il un moyen pas trop prise de tete de faire un tableau à trois entrées? (pour x,y et d), ou encore un "conteneur" plus adapté à ce genre de données?
 
Merci à ceux qui prendrons la peine de réponde  :jap:  
 
 

Reply

Marsh Posté le 02-07-2007 à 21:42:33   

Reply

Marsh Posté le 03-07-2007 à 11:16:50    

- les protos c'est Flash MX, tu oublies, maintenant tu fais des classes,
- le type des arguments passés à ta fonction n'est pas vérifié au runtime, mais à la compilation. Donc effectivement c'est pas très  
 
catholique comme code (voire dégueulasse).
- la méthode plus logique est d'utiliser le type Object, en passant les arguments dans un Object (cf. le passage de paramètres sur  
 
FuseKit) :
 

Code :
  1. foobar_mc.goTo({ loop: 4,
  2.   xTab: [1,2,3],
  3.   yTab: [1,2,3] });


 
- ta manière de tester le type Array est erronnée et donne toujours 'object',
 

Code :
  1. MovieClip.prototype.goTo = function( pParams:Object ) {
  2. if ( pParams.loop == undefined )
  3.  var loop:Number = 1;
  4. if ( pParams.xTab instanceof Array ) {
  5.  var loopN:Number =  loop * pParams.xTab.length;
  6.  var xpos =    pParams.xTab.shift();
  7.  var ypos =    pParams.yTab.shift();
  8.  var d =    pParams.dTab.shift();
  9. } else {
  10.  var loopN:Number =  2;
  11.  var xpos =    pParams.xTab;
  12.  var ypos =    pParams.yTab;
  13.  var d =    pParams.dTab;
  14. }
  15. /*  ...   */
  16. }


---------------
"Il y a vraiment aucun patelin qui s'appelle 'undefined' en France ?"
Reply

Marsh Posté le 03-07-2007 à 13:17:22    

J'ai essayé de me pencher sur les classes, mais j'ai encore un peu de mal à bien me débrouillé avec les histoires d'instanciations / heritage / composition... je dois livrer ça assez vite et j'ai une petite collection de protos dont je me sert sans arrets, c'est un peu dure d'oublier les vieux réflexes !
 
Faut que je trouves du temps pour m'y consacrer pleinement.
 
Merci en tt cas pour ton aide :jap:
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed