Цитата:
Впрочем, последний финт я не очень понимаю.
Потому что, мне казалось, что публичная переменная должна быть видна отовсюду, с прямым обращением...
А вот эта вот рут-строка, похожая на какой-то анахронизм оставшийся из AS2...
|
Свойство то и остается публичным, но вот вот ссылки на экземаляр класса у вас просто нет, для ее получения и используется рут, что, безусловно, есть анахронизм AS1.
У вас 4 сопсоба получения ссылок на объекты и экземпляр Main класса в том числе.
1. Передавать ссылку на main (или другие объекты) в конструкторе.

Код AS3:
var myInnstance:MyClass = new MyClass(main);
Этот метод не годится для клипов на сцене, так как в этом случае конструктор запускает сам флеш встроенными методами. А для реализации кода на фреймах флеш создает виртуальные классы, доступа к конструкторам которым у вас нет.
2. Делать метод init(main) публичным и вызвать извне. Это тоже что и 1, но позволяет передать пареметры обхектам выложенным на счене
3. Использовать наивгацию DisplayObject. parent, root - самый неудачный метод т.к. зависит от положения клипа на сцене, применим только для наследников DisplayObject и только для тех кто добавлен на сцену. Анахронизм AS1
4. СИнглетоны и статические методы. На ряду с 1 самый распространенный способ получения ссылок на объекты
На счет public var k1Value:Number = 0;
Приватные методы и переменные придумали не для того что бы усложнить себе жизнь, а для того что бы освободить себе голову. Старайтесь постепенно уходить от использования публичных переменных, т.к. что бы отследить где и кто ее меняет необходимо держать в голове целый часовой механизм. Если вам она нужна на чтение то лучше поставьте readonly свойстов (getter+ приватная копия с подчеркиваним)