![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Вопрос элементарный, но ответа я что-то найти внятного не могу.
Допустим, на сцене лежит мувиклип с идентификатором box (уже лежит, его туда изначально положили статически или мы вообще не знаем, откуда он там взялся) и, допустим, нам надо установить его ширину в 200px Из основного класса все это доступно элементарно как box.width=200; Из всяких производных классов он недоступен вообще и советы, которые я тут прочитал, сводятся к написанию методов сеттеров/геттеров в основном классе. Причем, все это сводится обычно к тому, что "так принято в ООП-языках". На самом деле, ООП (как подход) не отрицает наличия некоторых глобальных переменных/объектов, свойства которых доступны во всех классах приложения. Но это лирика. Вопрос. Как сделать объекты, уже лежащие на сцене, глобальными для всех? ЗЫ. getChildByName не работает |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Без проблем
testAS3.fla: мувиклип с id "box" лежит на сцене - синий прямоугольник шириной примерно 100px testAS3 указан как базовый класс При нажатии на прямоугольние по событию CLICK меняем его размер в основном классе (просто чтобы убедиться, что все работает), создаем объект класса main и пробуем достучаться до box оттуда. testAS3.as package { import flash.display.*; import flash.events.*; import engine.main; public class testAS3 extends MovieClip { public function testAS3() { box.addEventListener(MouseEvent.CLICK, gameStart); } public function gameStart(e:Event) { box.width=300; var gameStage:main = new main(); } } } engine/main.as output: null Последний раз редактировалось mikhailk; 25.11.2009 в 21:43. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну правильно, у main нет box.
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
конечно нет
вопрос в этом и был можно ли объявить box глобальным |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Этого не нужно делать. Вашему main вообще не должно быть дела до box-а. Если очень надо, вложите box в main.
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Вы сейчас говорите про динамические объекты.
С ними вообще проблем нет, где захотел, там и породил. Вопрос был про то, как из любого класса получить доступ к любому уже существующему объекту на сцене. |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Цитата:
А зачем вам это? |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
надо ))
а потом я не вижу, зачем они это убрали. в AS2 с этим же проблем не было. _root.box и вперед |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Это просто другой (лучший, на мой взгляд) подход к программированию, и теперь он стал официальным
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|