|
|
|||||
Регистрация: Apr 2010
Адрес: Санкт-Петербург
Сообщений: 44
|
Доступ к переменной
Есть базовый класс A, создающий экземпляр класса Б.
Как обратиться к переменной класса А из метода в экземпляре класса Б? |
|
|||||
Регистрация: Apr 2010
Адрес: Санкт-Петербург
Сообщений: 44
|
Наоборот, надо обратиться к переменной класса А из "экземпляр_б.метод()"
|
|
|||||
экземпляр класса Б генерирует событие "НУЖНА_ПЕРЕМЕННАЯ", на которое подписывается экземпляр класса А. В обработчике события экземпляр класса А передает значение переменной в экземпляр Б вызывая метод экземплярБ.передатьПеременную(переменная). Какие-то прямые манипуляции потомков с родителями крайне нжелательны и потенциально ведут к ошибкам.
__________________
ответ прост: be || !be == true |
|
|||||
Регистрация: Apr 2010
Адрес: Санкт-Петербург
Сообщений: 44
|
Как-то слишком сложно, оказывается...
А экземпляр класса Б может хотя бы просто прочесть переменную из главного класса А? |
|
|||||
Регистрация: Dec 2009
Сообщений: 125
|
parent.метод_класса_А();
parent.переменная_класса_А; Но это не ООП. Проектируйте правильно приложение. Дети не должны управлять родителями. Как правильно вам написали выше. |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Цитата:
Передавайте все необходимые данные в Б через конструктор или сеттеры, обрабатывайте и возвращайте результат. Каждый объект должен заниматься своим делом, а не лезть в дела чужих, тем более таким ужасным способом
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
Не факт, что Б - DisplayObject, у него может не быть parent, но в принципе, это свойство можно создать самому и данный код будеть работать и не для DisplayObject. Но опять же, так лучше не делать, т.к. у DisplayObject значение parent необходимо для других целей. При реализации через события, класс А всегда имеет контроль над доступом к нему, он может как подписаться на событие "НУЖНА_ПЕРЕМЕННАЯ", так и отписаться от него, когда экземпляр Б станет не нужен по каким либо причинам. Вы всегда будете уверены, что если значение переменной меняется, то это потому, что не отписались от события, а не потому, что где-то существует объект с ссылкой на класс А, который вносит в него изменения.
__________________
ответ прост: be || !be == true |
|
|||||
Регистрация: Apr 2010
Адрес: Санкт-Петербург
Сообщений: 44
|
Это почему-то не работает, не смотря на то, что Б - extends MovieClip, и переменная_класса_А объявлена публичной.
Добавлено через 36 секунд Спасибо за советы, я пересмотрю архитектуру, чтобы всё было сделано правильно. Но я пока не могу понять, как именно (испытываю сложности при переходе на ООП в AS3 после долгой работы в AS2 без ООП). Буду разбираться. |
|
|||||
это скорее всего потому, что у DisplayObject нет переменная_класса_А, надо делать преобразование типа
__________________
ответ прост: be || !be == true |
Часовой пояс GMT +4, время: 23:44. |
|
« Предыдущая тема | Следующая тема » |
|
|