Il est un peu difficile de répondre avec précision sans savoir comment vous créez les variables et quelles erreurs vous obtenez. Pouvez-vous poster toute la classe et les erreurs?
Je peux, cependant, vous recommandons que vous faites pas utiliser le motif Singleton. Ce n'est pas un cas parfait pour un Singleton. Le pattern Singleton n'a pas sa place dans la POO, c'est la programmation procédurale enveloppée comme OO, mais c'est un argument pour ailleurs.
Ceci est, cependant, un cas parfait pour les variables de niveau classe. Ce qui suit est un exemple simple. Il y a quelques déclarations de variables manquantes (numCards), car je ne sais pas où vous les créez et les définissez.
package{
import flash.display.Sprite;
public class CardGame extends Sprite{
private var cardPositions:Array = new Array();
private var cards:Array = new Array();
public function CardGame(){
for var i:uint = 1; i <= _CardGridInstance.numChildren; i++) {
var position:MovieClip = MovieClip(_CardGridInstance.getChildByName("Position_" + i));
cardPositions[i] = position;
cardPositions[i].pos_name.text = "position" + i;
cardPositions[i].id = ["pos"+i];
}
for(i = 1; i <= numCards; i++) {
var c:Class = getDefinitionByName("Card_" + i) as Class;
var cardInstance:MovieClip = new c();
cards[i] = cardInstance;
}
}
private function setPlayerCard(cardNumber:uint, cardPos:uint):void{
cards[cardNumber].x = _CardGridInstance.x + cardPositions[cardPos].x - 1;
cards[cardNumber].y = _CardGridInstance.y + cardPositions[cardPos].y;
addChild(cards[cardNumber]);
}
}
}
De cette façon, vous créez seulement et alimenter les tableaux une fois et vous pouvez y accéder depuis partout dans la classe cardgame. Ils ne sont pas globaux mais sont dans le cadre de la méthode setPlayerCard.
Vous pouvez obtenir des erreurs car les objets peuvent ne pas être instanciés lorsque le constructeur de la classe de document est appelé, mais cela peut être contourné.
Quelle est la nécessité pour la variable d'être publique et statique? Statique signifie que la variable est sur la classe et non sur les instances de la classe. Ainsi, chaque instance de "CardGame" partagera la même variable statique. Je présume, parce que c'est la classe de document, que vous n'en aurez pas plus d'une instance. Donc, il n'y a pas de raison à cela.
La seule autre raison, parce que vous l'a déclaré publique, est de rendre la variable accessible depuis l'extérieur de la classe par CardGame.cardPositions.Ceci est une mauvaise pratique car vous ne devez pas autoriser d'autres objets à manipuler directement les données internes d'une classe. Cela casse l'encapsulation. Comme il s'agit de la classe Document et du haut de la hiérarchie, vous devez transmettre une copie des données à l'objet qui en a besoin et attendre qu'un événement récupère les données mises à jour. De cette façon, vous pouvez nettoyer les données avant de les utiliser et vous ne faites pas confiance à d'autres objets pour respecter vos données.
http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)
Bonne idée! Je travaille actuellement à l'implémentation de la classe Singleton. Ma question est ... après avoir regardé une documentation sur la façon d'implémenter la classe Singleton, je suis un peu incertain de la façon de référencer les objets de la liste d'affichage entre les deux classes. Par exemple, les tableaux que je souhaite créer sont basés sur un MovieClip que j'ai ajouté à la liste d'affichage de l'autre classe. Classe 1: Ajouter un MovieClip à la liste d'affichage, par exemple appeler « foo » Singleton Créer un tableau des éléments à l'intérieur « foo » Résultat: Obtenir une erreur à l'intérieur de la classe singleton pour le référencement « foo » qui est à l'intérieur du autre classe. – redconservatory