2010-09-25 10 views
0

J'utilise actuellement un dictionnaire pour associer un booléen à mes sprites (non dynamiques), mais je voudrais savoir s'il y a une façon plus intelligente de le faire? Je pourrais simplement utiliser MovieClips pour assigner mes propriétés à la place de Sprites car les MovieClips sont dynamiques, mais je n'utiliserai aucune des propriétés ou fonctions de MovieClip, donc cela revient à un problème de meilleure pratique.ActionScript - Dictionnaires optimaux pour l'ajout de propriétés Bool aux objets non dynamiques?

Fondamentalement, je veux créer une propriété booléenne d'état sur mes sprites - ils sont activés ou désactivés, donc ma variable booléenne est appelée isOn.

var mySprite:Sprite = new Sprite(); 
var isOn:Boolean = false; 

var dict:Dictionary = new Dictionar(); 
dict[mySprite] = isOn; 

Ensuite, je vais interroger mon sprite pour vérifier sa propriété "isOn". Si c'est activé, je vais l'éteindre - ou le mettre à false.

if (dict[mySprite] == true) 
    { 
    dict[mySprite] = false; 
    } 

C'est la première fois que j'utilise des dictionnaires, alors corrigez-moi si je l'utilise mal. et, bien sûr, ma question originale est la suivante: est-ce la meilleure façon d'ajouter une propriété booléenne à un objet non-dynamique?

Répondre

1

Ne pouvez-vous pas écrire le vôtre Sprite qui a une propriété isOn? Cela semble être une façon beaucoup plus simple de réaliser ce que vous voulez, sans utiliser un MovieClip.

isOn peut être un var public ou une paire de getter/setter si vous voulez effectuer une certaine logique lors de la lecture/écriture.

public class MySprite extends Sprite { 

    private var _isOn:Boolean; 

    public function get isOn():Boolean { 
     return _isOn; 
    } 

    public function set isOn(v:Boolean):void { 
     _isOn = v; 
    } 

} 

Et puis:

var mySprite:MySprite = new MySprite(); 
mySprite.isOn = false; 

// at some later point... 
if (mySprite.isOn) 
{ 
    mySprite.isOn = false; 
} 
+0

oh, oui, ce serait la voie à suivre en général, mais j'oublié de mentionner que je crée tous mes sprites en Flash Authoring puis les exporter pour ActionScript. – TheDarkIn1978

+0

Dans ce cas, dans l'EDI Flash, vous pourriez avoir votre symbole étendre MySprite au lieu de Sprite. –