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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Code terminé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code terminé

n°1409667
Zedlefou
In cabbage we trust !
Posté le 19-07-2006 à 18:09:32  profilanswer
 

Bonjour les amis,
 
je ne viens pas demander ce qui cloche dans mon code mais plutot si il est correct.
Graphiste de formation, j'ai appris les bases de AS. Et le reste beaucoup d'autodidacte.  
Bref, je suis pas du tout au top niveau alors je voulais savoir si mon code était correct, si il y aurait des méthodes plus optimisés, plus propre etc ...
 
Le But :
Réalisé une carte pour un jeu de role en ligne. Quand on passe la souris dessus, la case ce grise et une petite fenêtre apparait dans laquel s'affiche la liste des batiments et leurs noms à cet endroit. (ce n'est pas encore intégré puisque la bdd n'existe pas encore, pour l'instant seul le n° de la case et du lorem ipsum)
A chaque batiment est associé un niveau (a, b, c, d etc ...) et une zone (de 0 à 219).
 
Ca donne ceci :
http://zedlefou.free.fr/img/map.swf
 
Et voici le code :

Code :
  1. var lvl = "A";
  2. _root.map_lvl.map_lvl_lettre.text = lvl;
  3. // Création des boutons
  4. this.createEmptyMovieClip("groBouton", 1);
  5. for (i=0; i<=21; i++) {
  6. for (j=0; j<=9; j++) {
  7.  var lvl = "2"+i+j;
  8.  if (i == "0" ) {
  9.   var clip = "bouton"+j;
  10.  } else {
  11.   var clip = "bouton"+i+j;
  12.  }
  13.  var lvl2 = "1"+i+j;
  14.  var coordx = 2+i*20;
  15.  var coordy = 2+j*20;
  16.  duplicateMovieClip(groBouton, clip, lvl);
  17.  // il va chercher un clip dans la bibliothéque et le met sur la scéne
  18.  this.attachMovie("boutonmap", clip, lvl2, {_x:coordx, _y:coordy});
  19. }
  20. }
  21. // Bouton clicable
  22. for (k=0; k<=219; k++) {
  23. this["bouton"+k].onRollOver = function() {
  24.  // joue le clip bouton
  25.  this.gotoAndPlay(2);
  26.  // On récup le n° du clip en enlevant 'bouton'
  27.  var lenom:String = this._name;
  28.  var lenom = lenom.substring(6, 9);
  29.  this.createTextField("my_txt", this.getNextHighestDepth(), 20, 20, 200,300);
  30.  var dutextenul:String = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit."
  31.  // On récup la valeur XML correpondant au batiment "lenom"
  32.  // !! A FAIRE !!
  33.  this.my_txt.text = lenom + dutextenul;
  34.  this.my_txt.fdt = new TextFormat();
  35.  this.my_txt.fdt.font = "Verdana";
  36.  this.my_txt.fdt.size = "10";
  37.  this.my_txt.fdt.multiline = true;
  38.  this.my_txt.fdt.display = block;
  39.  this.my_txt.fdt.embedFonts = true;
  40.  this.my_txt.setTextFormat(this.my_txt.fdt);
  41. };
  42. this["bouton"+k].onRollOut = function() {
  43.  this.gotoAndStop(1);
  44.  this.my_txt.removeTextField();
  45. };
  46. }
  47. // Changement de curseur
  48. _root.curseur.gotoAndStop(2);


 
Ah en fait il est pas tout à fait fini  :whistle:  
Il faut que je revoie le bloc texte qui affiche les batiments. Pour par qu'il sorte de la scéne d'abord et surtout je ne trouve plus le moyen d'envoyer le texte à la ligne. Si quelqu'un peut m'aider ...
 
Merci d'avance de vous pencher sur ce bout de code.  :hello:


Message édité par Zedlefou le 19-07-2006 à 18:19:09

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
mood
Publicité
Posté le 19-07-2006 à 18:09:32  profilanswer
 

n°1409717
craps_youp​la
Posté le 19-07-2006 à 20:04:00  profilanswer
 

jeux de rôle online = POO obligatoire. Arrête tout de suite le procédural, tu vas devoir jeter ton code dès que les fonctionnalités vont s'ajouter.
 
fait une classe Map, qui étend une classe TileMap, contenant des tas d'objets instanciés depuis une classe Tile.
 
l'interface de ta classe TileMap peut ressembler à ça (classe MapData = <structure de données parsée depuis le XML> ) :
- TileMap.setTiles(pMapData:MapData);
- TileMap.updateTiles(pMapData:MapData);
 
la classe Map qui étendrait TileMap (classe Vector indispensable de toute façon, à créer) :
- Map.moveTo(pDest:Vector);
- Map.rotateTo(pDest:Vector);
- Map.zoom(pFactor:Number);
- Map.unzoom(pFactor:Number);
 
Pour recevoir les données, utilises une classe pour ça (MapData par ex.), design-pattern du DataObject.
 
mc.rollOver = function() { ... } c'est crade, tu déclare la fonction au milieu du code, utilise une référence à fonction. Si tu suis une conception OO propre, tu finiras même avec un Delegate dessus.
 
_root à bannir totalement, utilise un adressage relatif à la place.
 
les méthodes du type this.attachMovie(), this.createEmptyMovieClip() renvoient un handler vers ce qu'elles viennent de créer, qu'il est de bon ton d'utiliser:
var mc:MovieClip = this.attachMovie('mc' , 'mc' + i , this.getNextHighestDepth());
 
regarde les bouquins de développement de jeux dans d'autres langages. ceux pour Flash ne sont pas terribles, c'est souvent une copilation de scripts procéduraux foireux. intéresse-toi plutôt à l'architecture logicielle en elle-même maintenant que tu as acquis la syntaxe. les architectures sont identiques dès que le langage est OO, que ce soit du C++, du Java ou de l'AS.  
 
si tu veux faire un jeu de rôle online en AS, tu passeras forcément par l'étape architecture logicielle/conception objet/UML, ça n'est pas "plus facile en Flash". La syntaxe et l'idiosyncrasie du langage le rende plus accessible, mais un développement reste un développement.


Message édité par craps_youpla le 19-07-2006 à 20:07:44

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

  Code terminé

 

Sujets relatifs
Mon texte dépasse des cadres, que modifier dans le code html ?analyseur de code pour dépassement mémoire
code a peufiner juste un petit bug....macro qui compare 2 classeurscomment interagir avec dos par le code ?
explication du code "Red Pill" / instruction SIDTnettoyage de code vba access
code pour manager IIS avec asp.net/c#cherche code source virus
Adapter un code généré sous Dev C++ vers du Solaris 5.8 (Unix)code unicode dans un script => non compris par le navigateur ?
Plus de sujets relatifs à : Code terminé


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