![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 47
|
Допустим у меня есть класс в котором хранятся ссылки на экземпляры других классов. Чтобы пользоваться этими ссылками надо в каждый класс в котором они хранятся написать
. А вопрос вот в чем можно ли как-то объявить эту переменную(ref) на уровне пакета чтоб не загромождать код этими строками(т.к. классов(небольших правда) будет около 50)???? |
|
|||||
|
И в любом месте можно обратиться, как имя_класс.ref. Если я вас правильно понял.
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 29.02.2012 в 14:34. |
|
|||||
|
Lorem ipsum
|
Можно в классе Ref пометить все ссылки как static и пользоваться ими из любого места:
Добавлено через 28 секунд А еще есть синглтон.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 47
|
у меня итак в Ref все экземпляры объявлены статическими(точнее переменные в которых они храняться), но не известно по какой причине я не могу обратиться к этим переменным из других классов(а я обращаюсь - Ref.primer) без приведенной в первом сообщении строки
Добавлено через 1 минуту Цитата:
|
|
|||||
|
Lorem ipsum
|
Цитата:
Птщь
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 47
|
а нужно делать импорт если все в одном пакете??
|
|
|||||
|
Lorem ipsum
|
Нет. Но тогда остается загадкой, почему не получается обратиться к статическому полю класса указанным ранее образом. Код бы посмотреть. Твоего Ref, твоего обращения.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 47
|
Вот Основной класс
package p { import flash.display.*; import flash.net.*; import flash.events.*; import flash.text.*; import flash.display.Sprite; public class Application extends MovieClip { public function Application() { trace("Конструктор основного класса Application"); trace(Ref._panel); // Часть кода я выпустил т.к. он тут вообще не при чем. } } } а вот сам Ref package p { import flash.display.*; import flash.display.Sprite; public class Ref extends Sprite { public static var _glav0; public static var _glav1; public static var _panel; public function Ref(){ _glav0 = new Glava0(); _glav1 = new Glava1(); _panel = new Panel(); } } } выводит кстати в аутпат вот это Конструктор основного класса Application undefined TypeError: Error #2007: Parameter child must be non-null. at flash.display: isplayObjectContainer/addChild()at p::Application$iinit()[C:\Users\Михаил\Documents\biolog8\src\p\Application.as:12] Добавлено через 6 минут если я добавляю строку в основной класс тогда вместо undefined выводит [object Panel] Последний раз редактировалось Михаил Свинцов; 29.02.2012 в 14:47. |
|
|||||
|
Естественно Вы же нигде ни разу не создали экземпляр класса, в конструкторе которого и инициализируются статические переменные. Либо где нибудь один раз напишите
да хоть в Ref:
Либо: И не помешает почитать чем отличается статическая переменная от не статической.
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 29.02.2012 в 14:53. |
|
|||||
|
Lorem ipsum
|
Публичные поля ни к чему начинать с подчеркивания.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|