![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 47
|
Недавно узнал, что оказывается к вложенным элементам можно обращаться через скобки [], как к массиву. Только данный трюк проходит, когда мы создаем мувик созданный в Flash IDE. Например, у нас есть два мувика box1 и box2, где box2 вложен в box1. В окне свойства в поле "имя экземляра" задаем соответственно имена box1 и box2. Теперь для того чтобы обратиться к box2 используем
Но почему данный трюк в проекте на чистом as3 в FlashBuilder или FD. var box1:MovieClip = new MovieClip(); box1.graphics.beginFill(0xff0000); box1.graphics.drawRect(0, 0, 400, 200); box1.name = "box1"; addChild(box1); var box2:MovieClip = new MovieClip(); box2.graphics.beginFill(0x00ff00); box2.graphics.drawRect(25, 25, 150, 150); box2.name = "box2"; box1.addChild(box2); box1["box2"].x = 200; Или я что-то делаю не то? |
|
|||||
|
Что-то не то.
А точнее, попробуйте трейснуть box1.box2.x, раз вы уж так уверены, что при добавлении в диспейлист объекта, к нему можно обращаться как к публичному свойству.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Цитата:
helio, зачем эти премудрости, если можно просто обращаться напрямую? И, кстати, обращение через квадратные скобки происходит дольше, чем обращение напрямую. Так что не стоит этим злоупотреблять. |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 47
|
Я знаю, что можно обратиться напрямую. Просто читая чужой код наткнулся на такое обращение. До этого никогда не видел такого обращения. В книжках тоже ничего не говорилось по этому поводу.
|
|
|||||
|
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Обычный нетипизированный доступ. Компилятор не может проверить правильность обращения к свойству/методу при таком доступе, так как используется строка (в массиве — int, в словаре — Object). Компилятор — Ваш единственный друг — не может гарантировать ни наличие такого свойства/метода у данного экземпляра, ни его тип/класс. Поэтому использовать данное "открытие" следует разве что с экземплярами динамических классов.
В ИДЕ у Вас срабатывает потому, что ИДЕ автоматически генерит классы для всех мувиклипов, и если есть вложенные мувики, объявляет их публичными свойствами класса мувика-контейнера. Когда Вы кодом добавляете в контейнер какой-то мувик, естественно, у контейнера от этого не появится публичное свойство — ссылка на этот добавленный мувик.
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|