![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Интересно услышать, как у вас массив на сцене находится. Сцена — визуальный объект. Никакие массивы на нем лежать не могут.
|
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
Хм, а разве stage не является классом? И объекты в нем лежать не могут? это как?
Вас послушать, так получается, что созданный но не добавленный addChild() объект - уже и не объект вовсе =) Последний раз редактировалось ALiEN_; 09.08.2007 в 18:21. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
По-моему у вас свое понятие «сцена». «Лежать» на сцене могут лишь визуальные объекты, типа Sprite, MovieClip и т.п.
Все остальные объекты являются либо локальными переменными метода/конструктора, либо свойством класса. Свойства и переменные на сцене «лежать» не могут. Если вы хотите перечислять свойства (неважно, какие) класса (неважно, какого) и хранить их в массиве, то так и пишите, а не применяйте понятие «лежит» к тому, чего быть не может. Кстати, про писанину в кадре: |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
Именно так =)
Вы привели пример со ссылкой на объект =))) а теперь попробуйте его своим numChildren или getChildAt test в данном случае Ваш "визуальный" объект как раз и "лежит" в stage, но не добавлен для отображения, и недоступен для получения его методами getChild, и другими. 8) Кстати не совсем согласен с "локальными переменными" или "свойствами", т.к. каждое свойство, либо локальная, или не локальная переменная - все равно не перестает быть объектом так уж сделано во флеше =) Последний раз редактировалось ALiEN_; 09.08.2007 в 18:39. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, проблема как раз в том, что вы пишете код в кадре и не понимаете результирующей структуры создаваемого класса. Не лежит ничего на сцене, test преобразовывается публичное свойство класса MainTimeline.
Ничего подобного не будет происходить, если писать код не в кадре. Именно поэтому, как я уже говорил, код в кадрах писать не стоит. Если бы вы создали Document class и написали бы подобный код в конструкторе, то получили бы ошибку. |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
Свойство не перестанет быть объектом, ведь так?
Теперь копнем глубже, если мы не говорим addChild, для объекта, он остается локальным "свойством", либо "переменной", а другими словами объектом класса stage. Если весь код выкинуть в main.as ... это ничего особо не изменит. т.е. Ваш test, так и будет объектом типа Sprite(); хоть и будет являться локальной "переменной", либо "свойством". |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ещё раз, про термины, определяемые в данной теме:
«лежит на сцене» — визуальный элемент, находящийся на сцене. Например, красный кружочек. «сцена» — рабочая область приложения, по умолчанию белого цвета. Все остальное не лежит на сцене. Так яснее? |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
Эх .... кружочек ....
Вот хелп: Class Stage Package flash.display Class public class Stage Language version: ActionScript 3.0 Player version: Flash Player 9 The Stage class represents the main drawing area. The Stage represents the entire area where Flash® content is shown. Вы наверно это имели ввиду когда говорили про рабочую область приложения? Теперь пример кода, после которого я надеюсь, я больше ничего отвечать не стану, и мы с Вами мирно разойдемся =)) основной код: var test:Sprite = new Sprite();
test.name = "Это объект 'test'";
var test2 = new Sprite();
test2.name = "А это объект 'test2'";
addChild(test2);
var z = new MyClass();
addChild(z);
var tmp = this;
trace("Что это у нас? : " + tmp);
trace("----");
z.setStage(tmp);
z.getObjects();
код класса MyClass var st;
function setStage(s){
st = s;
}
function getObjects(){
trace("А это что? : " + st);
trace(parent.getChildByName("А это объект 'test2'").name);
trace(st.test.name);
}
![]() Последний раз редактировалось ALiEN_; 09.08.2007 в 19:21. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
var sp:Sprite = new Sprite();
sp.name = 'test';
addChild(sp);
trace(stage.getChildByName('test')); // null
В вашем случае «сцена» — Document class, «лежит» = «принадлежит» или является локальной переменной. В рамках данной темы требуется иное. Последний раз редактировалось etc; 09.08.2007 в 19:24. |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
Раз Вы поленились посмотреть код, могу кинуть исходник, либо просто дать трейс:
trace |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|