2010-02-04 5 views
1

Cela peut être une question étrange, mais je me demande s'il existe un moyen efficace (peut-être en utilisant des espaces de noms?) Différentes variables par défaut dans une classe par développeur dans un projet actionscript. Je demande parce que nous travaillons actuellement sur une série de jeux Flash: 24 au total. Chacun est chargé par un conteneur shell. Le shell reçoit un var flash pour lequel le jeu à charger. Dans notre environnement de développement (Flash/FlashDevelop), il n'y a pas flashvars, donc une constante dans l'AS définit quel jeu à charger quand il n'y a pas flashvar:Variables par défaut avec plusieurs développeurs

/** Game to load during debugging if the game param is not set via flashvars. */ 
public static const DEFAULT_GAME:String = "gameName"; 

Ainsi, chaque développeur change cela au jeu, ils travaillent sur . Cependant, lors de la validation des modifications du référentiel (svn), le développeur doit modifier ou annuler les modifications, et chaque développeur doit le modifier dans son jeu lorsque quelqu'un d'autre le modifie. Vous vous demandez s'il existe un moyen de spécifier des paramètres par défaut similaires à Flashvars dans l'EDI Flash ou un fichier spécifique à l'utilisateur afin que le code puisse rester intact avec les vars de débogage hacky. Je sais dans Flex que vous pouvez définir les flashvars dans le modèle html, puis chaque développeur peut avoir son propre dossier de publication et svn: ignorer cela. Peut-être juste que chaque développeur crée un fichier XML non-commited qui définit leurs paramètres d'utilisateur? Je donne, des idées ?!

Répondre

2

Vous pouvez utiliser une compilation conditionnelle dans l'IDE FLASH.

Voici un exemple de code:

package{ 

    import flash.display.Sprite; 

    public class Main extends Sprite { 

     CONFIG::USER_A 
     private static const PATH:String="user_a_path"; 
     CONFIG::USER_B 
     private static const PATH:String="user_b_path"; 

     public function Main(){ 
      trace("current path >",PATH); 
     }  

    } 

} 

ajouter ensuite 2 constantes dans les options de compilation IDE flash:

CONFIG::USER_A 
CONFIG::USER_B 

et réglez la valeur false ou true pour l'utilisateur de commutation

Plus info here

+0

Vraiment ?! Wow, je n'avais aucune idée. Si cela fonctionne, vous êtes un gagnant. – typeoneerror

+0

Oui ça marche bien:) J'ai ajouté dans la réponse un lien vers l'aide adobe liée à la compilation conditionnelle – OXMO456

+0

Ah, CS4! Malheureusement, nous utilisons encore CS3 au travail. Bon conseil cependant. Je pense que c'est la meilleure solution pour ce que j'ai demandé, donc vous gagnez. – typeoneerror

5

Les fichiers de configuration spécifiques au développeur ont tendance à fonctionner.

ont une configuration « par défaut » dans le référentiel avec .default ou .sample ou quelque chose annexé au nom de fichier, et lorsqu'un développeur vérifie dehors pour la première fois, ils copient ce fichier, supprimer l'extension et personnaliser autant comme ils veulent sans affecter quelqu'un d'autre.

Y a-t-il un meilleur moyen? Probablement. Mais je ne l'ai pas trouvé.

+0

+ J'ai un fichier spécifique au développeur qui est ignoré par SVN. Agréable et facile. –

2

Stockez les données dans un Local Shared Object, puis chaque développeur peut avoir ses propres paramètres par défaut sans trucs hacky. Créez un formulaire accessible uniquement localement et utilisez-le pour afficher/modifier les valeurs par défaut. Stocker les données dans un LSO. Au démarrage de l'application, recherchez FlashVars et, s'il n'est pas présent, vérifiez le LSO.

+0

Belle solution! Je vais essayer ça aussi. – typeoneerror

+0

Je pense que ce serait une excellente application AIR! – typeoneerror

0

Il existe plusieurs solutions. Un bon point de vue de la programmation serait d'avoir une classe statique distincte appelée "LocalConfig.as".

Dans votre fichier .as d'origine. Il y aurait (pseudo code):

import common.LocalConfig; 
... 
public static const DEFAULT_GAME:String = LocalConfig.gameName; 
... 

} 

Utilisons une classe statique pour le rendre plus facile (pseudo code):

// Static class: 
package 
{ 
    public class LocalConfig 
    { 
     public static var gameName:String = "Game1"; 


     public function LocalConfig() 
     {} 
    } 
} 

étape suivante, vous vérifiez dans votre dossier commun/LocalConfig de votre projet dans le contrôle de la source. Ensuite, définissez ce paramètre dans vos machines locales pour ignorer l'extraction afin qu'il n'existe pas sur votre machine utilisateur locale. Enfin, vous voulez mettre cela dans le dossier local "global include/common /" de votre programmeur isolé du processus de contrôle de source.

EDIT:

supprimé ma référence de classe Singleton. L'utilisation de la classe statique est suffisante.

+0

Je ne sais pas pourquoi vous pensez que la classe doit être un Singleton, et il est logique que la propriété soit statique, mais je le recommanderais à la classe. –

+0

Vous avez raison. Singleton n'a pas de sens dans ce cas lorsque la variable est constante – jonycheung

1

Eh bien, vous pouvez le faire avec FDT:

contrôle "URI Ouvert après compliation" (panneau de configuration de débogage)

et définir URI:

bin/main.swf?test="this is a test"&test2="this is a test" 

cela agira comme flashVar.

+0

Oh, ce serait très bien. Je suppose que ça devrait être compilé dans FDT et pas Flash, hein? Où se trouve ce panneau de configuration de débogage? – typeoneerror

+0

Ah, ça ne va pas. Je pensais que FDT était autre chose. Ne l'ai pas. C'est une belle fonctionnalité cependant. Flex a également une caractéristique similaire. – typeoneerror

Questions connexes