|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2017
Сообщений: 7
|
Обращение из кода класса к объекту на экране
Помогите пожалуйста разобраться как можно обращаться к объекту на экране из класса.
Я нашел смог найти решение только для панели действия в самом флеше т.е. размещение кода в кадре временной шкалы или самом объекте. Там все просто это или по имени или через this. Это не то. Если у меня есть класс main который выполняет все функции и указан в свойствах документа .fla как основной класс. Как мне обратиться в нем к любому объекту на экране? по идее нужно запрашивать у stage... но я нашел вот такой код но он не работает. ошибка: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". |
|
|||||
DisplayList - не линейная модель, а иерархическая. Это значит, что каждый объект Sprite/MovieClip может хранить в себе ещё объекты, и там координаты будут относительными.
stage - корень DisplayList, в него никто не лезет, кроме новичков. В stage хранится экземпляр главного класса(Main), ребёнком stage. В свою очередь у вашего главного класса может быть ещё один ребёнок, Sprite/MovieClip, либо любой другой класс, унаследованный от DisplayObject. Вы не будете обращаться к ребёнку в DisplayList через DisplayList, а будете обращаться к нему через ту же ссылку, через которую отправили его на сцену. var bag:Sprite = new Sprite(); bag.addChild(new Book()); bag.addChild(new Book()); var b:Book = new Book(); b.title = "My Little Princess"; b.mass = 1.24; bag.addChild(b); this.addChild(bag); //Теперь, мне не нужно никак доставать его из DisplayList, //у меня ведь по прежнему есть ссылка на bag, и я буду обращаться к нему по ней. bag.x = 100; bag.y = 200; bag.alpha = 0.7;
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 02.07.2017 в 15:19. |
|
|||||
Регистрация: Jul 2017
Сообщений: 7
|
Хорошо, тоесть возможность управления объектами, расположенными на сцене в самом флеше, а не созданными где то в коде, отсутствует? ну такая возможность есть только у не классового подхода.. Это странно
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это чисто Ваши инсинуации.
Есть несколько причин, почему код в документ-классе не "видит" ваш объект на сцене. 1) объект появляется не в первом кадре, то есть на момент отработки кода его нет. 2) объект находится внутри другого объекта (контейнера). 3) у объекта имя (instance name) не уникальное, т.е. на сцене есть несколько объектов с одинаковым именем. В остальных случаях должно работать — если объект в первом кадре, ему назначено instance name "Testname" и он находится непосредственно в данном ролике, к нему можно обратиться Testname.play() или this.Testname.play().
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 07:20. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|