|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
А чего там преобразовывать, Zack уже содержит в себе Man.
То есть он Man и "кое что еще". В этом, простите, СМЫСЛ наследования.
__________________
Reality.getBounds(this); |
|
|||||
Цитата:
Последний раз редактировалось zackscript; 06.01.2016 в 21:54. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
"Можно" по-разному, а "нужно" — создавать детей в том классе, который ими управляет, в котором логика управления жизнью этих объектов. Какой смысл создавать объекты в одном классе и помещать их в его Список Отображения, а управлять ими из другого?
Есть еще другой вариант "взгляда" на иерархию, это концепция не "родители и дети", а "инструмент". Кнопка и Звезда у Вас это инструменты для решения какой то задачи класса В, который в свою очередь — инструмент класса А. То есть А создает В, чтобы тот выполнял какую-то определенную задачу, функцию. Создатель знает, какую именно и для чего, и что делать с событиями и данными, поступающими от экземпляра В. Знает, что они означают и на что влияют в текущем контексте задачи. Сам В этого не знает, этого контекста. У него есть заложенная в него ответственность — создать то-то и то-то, отобразить, слушать события от своих детей-инструментов и что-то важное диспатчить событиями наверх классу А. Для решения этой своей задачки он создает свои инструменты — кнопки и прочее. Кнопки, на самом деле, тоже создают в себе экземпляры графики, картинки или векторные шейпы, и тоже слушают нажатия на них и прочее. Уровень ответственности все ниже и ниже, чем дальше мы уходим от центра логики приложения — Документ-класса — тем меньше знают о происходящем инструменты. Конечный шейп или картиночка в кнопке уже вообще ничего не делает и никакого кода не содержит, кнопка только слушает мышиные события над собой и показывает/скрывает состояния (картинки), В слушает нажатия на кнопки и в зависимости от них что-то посылает классу А. Важный момент Иерархии — объекты одного уровня не могут приказывать что-то друг другу в обход более старшего. Это он, старший, знает, зачем вообще они живут и что должны делать. Каждый воспитывает только своих детей и несет ответственность только за них.
__________________
Reality.getBounds(this); |
|
|||||
Фууух, можно пожалуйста ссылки на 4-ю проблему (реальные примеры).
Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Кнопка и Звезда у Вас создаются в Документ-классе.
Вы Документ-класс что ли поместили в список отображения класса В? Добавлено через 37 минут Это не создание объектов. Это создание переменных _btn и _star. Которые Вы пытаетесь инициализировать другими переменными Btn и Star, которых НЕТ в этом классе, они в классе А. Они созданы там автоматически программой Flash и инициализированы теми экземплярами, что Вы нарисовали на таймлайне и задали им имена, которые и стали автоматически названиями переменных класса А.
__________________
Reality.getBounds(this); |
|
|||||
Цитата:
Я просто хотел красиво структурировать классы, думал что если в Мэин-классе создать объект BClass(пример ниже) то BClass мог бы манипулировать объектами , кнопками, битмапы, звуки и т.д. ну как видите нечего не получается. А вот если я привязал бы документ с классом BClass - робит. Main package { import flash.display.MovieClip; import flash.display.Stage; import flash.display.Sprite; import flash.events.MouseEvent; import flash.display.SimpleButton; public class Main extends Sprite { private var _bclass:BClass; public function Main(); { _bclass = new BClass (); addChild(_bclass); } } } package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.MouseEvent; import flash.display.SimpleButton; public class BClass extends MovieClip { public function BClass() { Star.x += 200; Btn.addEventListener(MouseEvent.CLICK,onBtn); } public function onBtn(e:MouseEvent) { trace("HI"); } } } |
|
|||||
Нужно передать в экземпляр BClass ссылки на объекты Star и Btn. То, что Вы хотите сделать — не разделение по классам, а разбиение кода по файлам с последующим инклюдом. Такого в AS3 нет (хотя, скажу честно, существует) и не принято. И да, переменные принято называть с маленькой буквы — исправьте instance name у Star и Btn.
__________________
тут я |
|
|||||
Цитата:
И еще у меня в Main такая ошибка, раньше не было такого но или я запутался пока копался в поисках ответа. В строгом режиме: Цитата:
Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Простейший вариант:
— объявить в BClass публичные переменные public var btn:SimpleButton и public var star:MovieClip; — в мейне создать экземпляр bclass:BClass; — в мейне передать его переменным ссылки на объекты, bclass.btn = btn; bclass.star = star; Второй вариант: — в конструкторе BClass принимать параметры Третий вариант — создать сеттеры — Вам наверное рановато.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 06:28. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|