![]() |
Доступ из класса в класс
Есть два класса из одного вызываю функцию в другом, а потом хочу из другого вызвать функцию из первого - не получается.
Где можно почитать о правильной иерархии, или как это называется, классов, у Мука совсем мало об этом, или я не правильно понимаю суть проблемы? |
Связать классы подпиской на события друг-друга, например.
Или почитай про IoC/DI: http://orangeflash.eu/?p=79 |
Там написано "это сможет поянть даже контуженый инвалид" очевидно это я и есть. :( По сути ничего не изменилось из первого доступ есть, из второго нет.
|
Я же говорю — сделать обоих вещателями.
A создает B, подписывает B на свои события и сам подписывается на события B. Вот тебе и двусторонняя связь. |
Код:
class Class1{private var b:Class2 и из Class2 уберу static из функции он все равно ругается |
а ругается случаем не на то, что у Class1 нет статического fun1() ?
|
Цитата:
|
Нет-нет.
Код:
import mx.events.EventDispatcher;Код:
import mx.events.EventDispatcher;Код:
var otherClass:OtherClass = new OtherClass(); |
Да мудрено, буду разбираться, спасибо, где этому учат? :)
|
Здесь :D
|
Типа за каждый пост не во флейм, пару байтов в мозг
|
смотря для чего оно надо.., а то можно и по-простому ссылками обменяться, не привлекая для этого диспатчер:
Код:
class Class1{ |
To __etc спасибо еще раз. Сегодня сел разбираться все получилось, т.е. нужно подписывать ту функцию, которую использую из другого класса. А как можно поступить так же с переменными, чтобы можно было видеть переменные первого класса во втором и если надо менять их. А может разумнее создать класс для переменных и хранить их там. Но тогда не хочется писать VarClass.myVar, может есть какой другой красивый способ?
|
Ну не знаю, насколько оно красиво, но передавать можно ссылку на первый класс. Но тогда будет жесткая связь.
Лучше на событийной модели, вещать из второго класса первому, чтобы тот поменял параметр. |
Но ведь не получается писать жестко var myVarClass2 = Class1.myVarClass1
Он ругается: имя мол конфликтует |
Не надо путать статические свойства с обычными.
Код:
import mx.events.EventDispatcher;Код:
class OtherClass { |
Получается та же история, как и с функциями, да...
|
Вообще-то он ругается как и раньше, я думал у меня ошибка, но сохранил твой код, тоже самое
Код:
The name of this class, 'OtherClass', conflicts with the name of another class that was loaded, 'OtherClass'. |
Я же говорю — в событии посылаешь нужное значение параметра и вызываешь событие, которое и будет менять значение.
Ругается? Удали ASO файлы (Control > Delete ASO Files) или перемести проект в другую папку. |
Не помогает
|
Ну тогда назови класс по-другому. Бывают у флеша критические дни…
|
Да точно, переименование помогло, действительно критические...
|
| Часовой пояс GMT +4, время: 19:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.