Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   двойной Singletone (http://www.flasher.ru/forum/showthread.php?t=179530)

hellopaso 16.05.2012 17:37

двойной Singletone
 
привет
простая проблема
1) у меня игрушка, а в ней класс MyClass который является Singletonom.
2) у меня коммуникация игрушка - AMF
3) в ответ я получаю новый MyClass
надо заменить новый со старым
как?
MyClass.as
Код AS3:

public static function get instance():MyClass {
        if (!_instance) {
                _allowInstantiation = true;
                _instance = new MyClass ();
                _allowInstantiation = false;
        }
        return _instance;
}
public static function set instance(myNewClass:MyClass ):void{
        _instance = myNewClass;
}

Game.as
Код AS3:

private var myClass:MyClass;
public function initializeGame():void{
        myClass = MyClass.instance;
}
public function handleAnswerFromAMF(result:Object):void{
        MyClass.instance = result as MyClass;
}

это правильно?

i.o. 16.05.2012 18:05

Какой-то неправильный синглтон. Сеттера не должно быть.
Наверное должно быть как-то так:

Код AS3:

// MainSingleton.as
import flash.errors.IllegalOperationError;
 
public class MainSingleton
{
        public static const instance : MainSingleton = new MainSingleton();
 
        public function MainSingleton()
        {
                if (instance)
                        throw new IllegalOperationError("Singleton instance already created.");
        }
 
 
        public var myClassRef : MyClass = null;
}
 
 
 
// MyClass.as
public class MyClass
{
        public function MyClass()
        {
        }
}
 
 
 
//  Using
 
private var myClass : MyClass;
 
public function initializeGame() : void
{
        myClass = MainSingleton.instance.myClassRef;
}
 
public function handleAnswerFromAMF( result:Object ) : void
{
        MainSingleton.instance.myClassRef = result as MyClass;
}



Часовой пояс GMT +4, время: 10:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.