Я имею дело со сценарием, в котором мой код может быть включен в другой контент Flash, либо включен через команды import .as, а затем упоминается как Singleton, например,
import com.as3.Singleton;
...
...
Singleton.birth();
Singleton.getInstance().test();
... но также импортируется как библиотека времени выполнения; с классом Singleton, предварительно экспортированным как .swf (вместо предварительной выпечки класса).
Как мне ссылаться на Singleton после того, как Event.COMPLETE сработал из загрузчика, который вводит SWF? Обычно я бы написал что-то вроде:
public function singletonCompleteHandler(event:Event):void {
var mySing:Singleton = _loader.contentLoaderInfo.content as Singleton;
}
... но я знаю, что не хочу ссылаться на синглтон через ссылку "var". Я не очень хорошо объясняю, но, по сути, после загрузки файла singleton.swf мне нужно использовать код внутри него в одноэлементной модели (т. Е. Убедиться, что в моем приложении есть только один его экземпляр).
Копия класса Singleton, включенного ниже (кстати, спасибо за любые мысли по этому поводу).
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.");
}
}
}