Привет всем!
А теперь к делу. Мой вопрос касается не конкретной программы, а организации всех программ в общем.
Вопрос №1
У меня есть движок, главный класс которого должен иметь доступ ко всем объектам, которые связаны с движком. Единственное, что приходит на ум - это завести массив в главном классе, а вот дальше начинаются разногласия:
1) Можно делать так:

Код AS3:
var o = new MyObject();
engine.registerObject(o);
2) Можно так:

Код AS3:
var o = new MyObject(engine);
3) Так (объявив конструкторы объектов как private):

Код AS3:
var o = engine.createMyObject();
4) И наконец, класс движка можно сделать статическим, что обеспечит доступ к его массиву из движка.
Вариант №3, к сожалению, в AS3 не проходит, т. к. AS3, такой сякой, хочет public конструктор, но мне се равно интересно, следует ли его использовать в других языках программирования.
Как вам мои варианты? Или что посоветуете?
Вопрос №2(организация взаимодействия)
У меня в программе есть несколько классов, каждого из которых ровно по 1-му экземпляру. Некоторые из классов должны взаимодействовать между собой(причём на этапе начала разработки программы я ещё точно не знаю какие). Возникают такие идеи:
1)

Код AS3:
class SomeClass
{
public static var someClass:SomeClass;
public function SomeClass()
{ someClass = this; ... }
}
2) Сделать класс статичным
Что лучше выбрать?
Вопрос №3(Вывод графики)
В большинстве языков программирования, мы обычно запускаем цикл, в котором смотрим состояние программы(игра, пауза, главное меню, и т.п.) и в зависимости от состояния рисуем то, что надо.
В AS появляется возможность разные состояния программы нарисовать в разных Спрайтах, а при очередной смене состояния, менять видимость разных спрайтов(visible = true/false

Это хорошо или плохо?
Хорошо ли часть графики рисовать в среде Flash'а?