Je traite du scénario dans lequel mon code pourrait être inclus dans un autre contenu Flash soit inclus via les commandes d'importation .as, puis référencé comme un Singleton, par exemple.Gestion des singletons dans les swfs externes
import com.as3.Singleton;
...
...
Singleton.birth();
Singleton.getInstance().test();
... mais également importé en tant que bibliothèque d'exécution; avec la classe Singleton exportée en .swf au préalable (au lieu de pré-cuire la classe).
Comment est-ce que je devrais faire référence au singleton une fois Event.COMPLETE a tiré du chargeur qui apporte le swf? Normalement, je code quelque chose comme:
public function singletonCompleteHandler(event:Event):void {
var mySing:Singleton = _loader.contentLoaderInfo.content as Singleton;
}
... mais je sais que je ne veux pas être le référencement singleton via une référence « var ». Je ne m'explique pas très bien, mais fondamentalement, une fois le fichier singleton.swf chargé, j'ai besoin d'utiliser le code qu'il contient dans un modèle singleton (c'est-à-dire qu'il n'y a qu'une seule instance dans mon application).
Copie de la classe Singleton incluse ci-dessous (merci pour toute réflexion à ce propos). « Comment dois-je faire référence au Singleton une fois Event.COMPLETE a tiré hors du chargeur qui apporte dans le swf »
package
{
public class Singleton extends Sprite
{
private static var instance:Singleton;
public function Singleton() {
if (instance) {
throw new Error("Singleton can only be accessed through Singleton.getInstance()");
}
}
public static function birth() {
if (instance == null) {
instance = new Singleton();
}
}
public static function getInstance():Singleton {
return instance;
}
public function test():void {
trace("Testing our singleton.");
}
}
}
Je pensais que les variables globales ont été supprimées de AS3? C'est maintenant des références statiques à la place n'est-ce pas? –
En outre, le résultat ci-dessus dans l'erreur de compilation suivante: 1118: Coercion implicite d'une valeur avec le type statique Objet à un type sans rapport possible Classe –
@happyspud J'ai ajouté un exemple de gloabl var à la réponse. Aussi corrigé cette erreur, devrait être saisi Objet, désolé à ce sujet. –