Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 09.08.2007, 18:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 31  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Интересно услышать, как у вас массив на сцене находится. Сцена — визуальный объект. Никакие массивы на нем лежать не могут.

Старый 09.08.2007, 18:19
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 32  
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
Хм, а разве stage не является классом? И объекты в нем лежать не могут? это как?

Вас послушать, так получается, что созданный но не добавленный addChild() объект - уже и не объект вовсе =)


Последний раз редактировалось ALiEN_; 09.08.2007 в 18:21.
Старый 09.08.2007, 18:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 33  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
По-моему у вас свое понятие «сцена». «Лежать» на сцене могут лишь визуальные объекты, типа Sprite, MovieClip и т.п.
Все остальные объекты являются либо локальными переменными метода/конструктора, либо свойством класса. Свойства и переменные на сцене «лежать» не могут.
Если вы хотите перечислять свойства (неважно, какие) класса (неважно, какого) и хранить их в массиве, то так и пишите, а не применяйте понятие «лежит» к тому, чего быть не может.

Кстати, про писанину в кадре:

Код:
var test:Sprite = new Sprite();
trace(this.test);

Старый 09.08.2007, 18:31
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 34  
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
Именно так =)

Вы привели пример со ссылкой на объект =)))

а теперь попробуйте его своим numChildren или getChildAt

Код:
var test:Sprite = new Sprite();

trace(test);
trace(this.test);
test в данном случае Ваш "визуальный" объект как раз и "лежит" в stage, но не добавлен для отображения, и недоступен для получения его методами getChild, и другими. 8)

Кстати не совсем согласен с "локальными переменными" или "свойствами", т.к. каждое свойство, либо локальная, или не локальная переменная - все равно не перестает быть объектом так уж сделано во флеше =)


Последний раз редактировалось ALiEN_; 09.08.2007 в 18:39.
Старый 09.08.2007, 18:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 35  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, проблема как раз в том, что вы пишете код в кадре и не понимаете результирующей структуры создаваемого класса. Не лежит ничего на сцене, test преобразовывается публичное свойство класса MainTimeline.
Ничего подобного не будет происходить, если писать код не в кадре. Именно поэтому, как я уже говорил, код в кадрах писать не стоит.
Если бы вы создали Document class и написали бы подобный код в конструкторе, то получили бы ошибку.

Старый 09.08.2007, 18:52
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 36  
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
Свойство не перестанет быть объектом, ведь так?

Теперь копнем глубже, если мы не говорим addChild, для объекта, он остается локальным "свойством", либо "переменной", а другими словами объектом класса stage.

Если весь код выкинуть в main.as ... это ничего особо не изменит. т.е. Ваш test, так и будет объектом типа Sprite(); хоть и будет являться локальной "переменной", либо "свойством".

Старый 09.08.2007, 18:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 37  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ещё раз, про термины, определяемые в данной теме:
«лежит на сцене» — визуальный элемент, находящийся на сцене. Например, красный кружочек.
«сцена» — рабочая область приложения, по умолчанию белого цвета.

Все остальное не лежит на сцене. Так яснее?

Старый 09.08.2007, 19:15
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 38  
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: 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.
Старый 09.08.2007, 19:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 39  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ALiEN_
Вы наверно это имели ввиду когда говорили про рабочую область приложения?
Нет, Stage — свойство stage у DisplayObject. И tmp в вашем коде вовсе не является Stage.

Код:
var sp:Sprite = new Sprite();
sp.name = 'test';
addChild(sp);
trace(stage.getChildByName('test')); // null
Вы оперируете терминами, которые в рамках данной темы означают совершенно иное. Что именно — я уже рассказал.
В вашем случае «сцена» — Document class, «лежит» = «принадлежит» или является локальной переменной. В рамках данной темы требуется иное.


Последний раз редактировалось etc; 09.08.2007 в 19:24.
Старый 09.08.2007, 19:24
ALiEN_ вне форума Посмотреть профиль Отправить личное сообщение для ALiEN_ Посетить домашнюю страницу ALiEN_ Найти все сообщения от ALiEN_
  № 40  
ALiEN_
UFO
 
Аватар для ALiEN_

Регистрация: Jul 2007
Сообщений: 173
Раз Вы поленились посмотреть код, могу кинуть исходник, либо просто дать трейс:

trace
Код:
Что это у нас? : [object MainTimeline]
----
А это что? : [object MainTimeline]
А это объект 'test2'
Это объект 'test'

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 16:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.