2010-09-15 6 views
1

Tâche:AS3: La conception d'une collection personnalisée classe

Concevoir une classe qui est une collection d'autres objets et pourrait être utilisé dans pour chaque (..)

public class Cards 
{ 
    public function add($Card : Card) { ... } 
} 

//... 

var $Cards:Cards = new Cards(); 
//... 
for each (var $Card:Card in $Cards) { 
    // do things 
} 

Mon premier attemt devait utiliser Array classe comme parent:

public class Cards extends Array { ... } 

Cela fonctionne très bien, mais Cartes classe hérite beaucoup de multidisque de méthodes publiques qui ne devraient pas être visibles dans cartes objets comme sort(), push(), foreach() , etc

Deuxième tentative était de définir la classe de base comme dynamique:

public dynamic class Cards { ... } 

Cela fonctionne, mais dans ce cas je dois définir chaque classe enfant aussi dynamique aussi:

public dynamic class Cards { ... } 
... 
var $Cards:Cards = new Cards(); 
$Cards.add(new Card()); // works well 

mais

public class Player_Cards extends Cards { ... } 
... 
var $PlayerCards:Cards = new Player_Cards(); 
$PlayerCards.add(new Card()); // error, Player_Class should be defined as dynamic too 

chose intéressante est que si j'utilise tableau classe parent Je ne devrais pas définir les classes enfant comme dynamique

Alors, la question est : Est-il possible de concevoir une classe de collection en AS3 qui pourrait être utilisé dans pour chaque (...) et ne contiendra aucune méthode unnessary (comme de Tableau classe)?

Répondre

1

Vous pouvez le faire en étendant la classe Proxy.

Cochez cette case question pour obtenir des informations sur la procédure à suivre.

+0

Très cool! Je n'avais pas l'air de ça avant. – rfunduk

+0

@thenduks. Je pensais la même chose quand j'ai appris l'existence du proxy. (Bien que je ne l'ai jamais vraiment utilisé dans un vrai projet, j'ai juste joué un peu avec ça). –

+0

Oui! Exactement ce que je cherchais. Merci beaucoup! – user448564

Questions connexes