![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Собственно не могу понять, в чем ошибка. Компилятор показывает на строчку throw new Error("Game is a singletone class");
package { import flash.display.Sprite; public class Game extends Sprite { private static var _allowInstantiation:Boolean = true; private static var _instance:Game; private var _hud:HUD; public static function get instance():Game { if (!_instance) { _allowInstantiation = false; _instance = new Game(); _allowInstantiation = true; } return _instance; } public function Game() { if (_allowInstantiation) { throw new Error("Game is a singletone class"); } initialize(); } private function initialize():void { _hud = HUD.instance; addChild(_hud); } } } package { import flash.display.Sprite; public class HUD extends Sprite { private static var _allowInstantiation:Boolean = true; private static var _instance:HUD; private var _game:Game; public static function get instance():HUD { if (!_instance) { _allowInstantiation = false; _instance = new HUD(); _allowInstantiation = true; } return _instance; } public function HUD() { if (_allowInstantiation) { throw new Error("HUD is a singletone class"); } initialize(); } private function initialize():void { _game = Game.instance; } } } |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Какую именно ошибку показывает компилятор? Вообще, судя по коду, здесь идет бесконечная рекурсия...
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Цитата:
at Game()[/Users/gadzimari/Documents/Adobe Flash Builder 4.6/lab/test/src/Game.as:28] Неужели два синглтон-класса не мог обращаться друг к другу? |
|
|||||
|
Регистрация: Dec 2011
Сообщений: 70
|
Проблема в том, что вы генерируете ошибку, но нигде ее не перехватываете.
Нужно сделать что-то вроде этого Здесь созданная вами ошибка перехватывается в блоке catch. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
А у вас Game случайно не DocumentClass? Или на сцене он не валяется?
Если ответ на хотя бы один из вопросов "да", вам нужно немного переписать flash-player и плагины (для firefox и ie), чтобы они создавали документ не с использованием new <document class>, а через <document class>.instance (если таковой найдется). При этом могут перестать работать другие флешки. Цитата:
2. Сниглтоны - зло. 3. Зачем вам вообще ленивая иницаилизация? Хочу ответ от вас, зачем она сделана в данном конкретном случае. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Оно там ещё и стэк вызовов показывает - пройдитесь по нему, должны понять в чем фигня)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 120
|
Цитата:
Посмотрел, но честно говоря не догнал. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Проанализируйте внимательно цепочку вызовов, начиная с new Game();
|
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
Цитата:
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|