IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

[POO] Quelle est la meilleure méthode pour conserver des objets ?


Sujet :

ActionScript 3

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [POO] Quelle est la meilleure méthode pour conserver des objets ?
    Bonjour à tous,

    Voilà 4 jours que je me bats avec la POO. Je suis pas un pro, je tiens à le préciser.

    Ma question est simple, j'ai essayé au maximum de chercher mais la Google me sort par les yeux et j'ai épuisé mon stock de mots clef Francais/Anglais.

    Question :
    Quelle est la meilleure méthode pour conserver des objets ?

    J'ai créé une class (que nous appellerons NouvelleRoute.as pour simplifier sur ce forum). Lorsque je fait une instanciation du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var route:NouvelleRoute = new NouvelleRoute();
    , je crée donc un objet, ou plutôt une nouvelle instance.
    Le truc, c'est que je crée à peu près 1200 instances de ma class et que j'ai besoin (ou du moins je suis susceptible) de pouvoir accéder à chacune d'entre elles pour modifier les propriétés. Vous l'aurez compris, je dois pouvoir modifier chaque "objet" NouvelleRoute en y accédant par son nom j'ai donc besoin d'un tableau associatif pour tous les stocker, à moins qu'il existe une solution en POO ?

    Après plusieurs jours sur Google, je suis arrivé à la conclusion suivante : utiliser un Dictionary.

    En gros je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MySQL => PHP => XML => 
    boucle sur chaque item du XML {
     
    var route:NouvelleRoute = new NouvelleRoute();
    ...route.propriete1 = xml.target.data[i]..etc
     
    //ET C'EST LA QUE JE NE SAIS PAS COMMENT FAIRE, alors je rentre chaque instance dans un dictionary
    variableDictionary[numeroInstance] = route;
     
    }
    En gros, c'est une variable gloable. Je trouve que c'est sale, et surtout je crois qu'il y a mieux en POO. Mais bon jusqu'à maintenant çà marchait.

    En fait j'utilise des objets de l'API Google Maps. Et je veux pouvoir tracer chaque segment de route (une Polyline) sur ma carte en sélectionnant le nom de la route. Jusque là ca marche, mais lorsque je veux modifier ma polyline (route.polyline), variableDictionary["nomRoute"].polyline a bien été modifié, mais ma carte ne se met pas à jour... C'ets vraiment bizarre !

    J'espère avoir été clair. J'ai vraiment besoin de votre aide ca fait des jours que je me retient de poser une question, j'espère qu'elle n'est pas trop stupide !

    Merci et bonne soirée

    PS : je ne veux pas poster mon code, même s'il n'est pas long (30 lignes) car ce n'est pas agréable, mais si ca peut vous aider je le fais rapidement

  2. #2
    Membre confirmé Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Points : 494
    Points
    494
    Par défaut
    Si t'a besoin de tout tes objet et que tu dois y acceder par le nom , le dictionnnaire qui est un tableau de recherche binaire est la meilleur solution.

    Pour l'api googlemap , rapelle la fonction display/update/refresh (enfin je sais pas le nom) pour mettre a jours l'affichage.

    En effet t'imagine si l'api s'amuser a mettre 1200 listener ... non elle genere une bonne fois pour toute

    Enfin pour en revenir au dico , tu peux optimiser en decoupant en plusieurs dico suivant des criteres de recherche ( ou par lettre ? ), sa te ferais par exemple 6 dico de 200 objets chacun... mais je suis pas sur que sa soit plus optimisé , a tester ^^ ..

    Dernier conseil : verifie ton algo ( on sait jamais .. ). Car ça m'a l'air bien bourrin comme tu nous le fais comprendre dans ton premier message

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour cette réponse, je suis content de voir que j'ai choisi la bonne solution.

    Cependant, j'ai toujours mon problème, mais je pense que j'ai avancé.
    Alors je défriche un peu, c'était pas clair.

    Class NouvelleRoute.as (simplifié pour le forum)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package classesAS3
    {
    	import com.google.maps.MapMouseEvent;
    	import com.google.maps.overlays.Marker;
    	import com.google.maps.overlays.Polyline;
     
    	public class NouvelleRoute
    	{
    		public var nomStation:String;
    		private var _polyline:Polyline;
    		public var markerEntreePolyline:Marker;
     
    		public function NouvelleRoute()
    		{
    		}
     
    		public function set polyline(chainePolyline:String) {
    			//Cette fonction convertie une chaine en objet Polyline GoogleMaps
    			//ex chaine "lat0,lng0;lat1,lng1"
    			_polyline = //POLYLINE GOOGLE MAPS
     
    			//Ici je crée un Marker pour le point d'entrée de la polyline
    			creerMarker();
     
    		}
     
    		public function get polyline():Polyline {
    			return _polyline;
    		}
     
    		private function creerMarker():void {
    			//On récupère le premier point de la polyline
    			//Aucun problème pour créer le marker
    			markerEntreePolyline = //MARKER GOOGLE MAPS
    			//Ajout d'un ecouteur
    			markerEntreePolyline.addEventListener(MapMouseEvent.DRAG_END, function(e:MapMouseEvent):void {
    				recreerPolyline();
    			});
     
    		}
     
    		public function recreerPolyline():void {
    			//on recréer la polyline à partir des nouvelles coordonnées
    			_polyline = //POLYLINE GOOGLE MAPS	
    		}
     
     
    	}
    }
    J'ai une carte GoogleMaps sur mon Application. Dessus je veux dessiner des segments de route.

    Tous mes segments de routes sont des instances d'une class NouvelleRoute.as. J'insiste, tous ces segments sont donc des "objets" NouvelleRoute.as.

    Je veux tracer un segment sur une carte Google Maps (id=carteParametrageSegment). Lors de la sélection dans un menu déroulant d'un segment de route (via son nom), je vais chercher le segment dans mon dictonary : variableDictionary[numeroInstance]. J'affecte ca dans une variable temporaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Bindable]
    var NouvelleRouteEdition:NouvelleRoute = new NouvelleRoute();
    Puis je copie l'objet dans cette variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NouvelleRouteEdition = variableDictionary[numeroInstance];
    A mon avis, déjà, là il ya un problème je ne copie pas, mais je fais une référence, à la limite ce n'est pas grave.

    Le problème c'est que je devrais raffraichir la carte depuis la class, et bien évidemment je n'ai pas accès à cette carte depuis la class ? Alors comment faire, peut-être propager l'evenement mais je ne vois pas comment ??

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2012, 16h54
  2. Réponses: 3
    Dernier message: 21/01/2009, 22h47
  3. Réponses: 2
    Dernier message: 10/07/2008, 12h29
  4. [HTML] quelle est la meilleure méthode pour changer la langue d'un site?
    Par poupouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/02/2008, 12h17
  5. Réponses: 20
    Dernier message: 27/06/2006, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo