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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.04.2008, 21:01
futurator вне форума Посмотреть профиль Отправить личное сообщение для futurator Найти все сообщения от futurator
  № 1  
Ответить с цитированием
futurator
 
Аватар для futurator

Регистрация: Mar 2008
Сообщений: 27
По умолчанию Классы: объект в объекте.

И снова здравствуйте.
Таких возникло два вопроса:
1) каким образом ПРАВИЛЬНО создавать объекты в классе? Тоесть не просто
Код:
myObj:Object = new Object();
,
а сразу с указанием переменных объекта.
2) можно ли создавать вложеные объекты в объектах в классе? (судя по моим скромным попыткам - нельзя =) И если можно, то как?
Спасибо.

Старый 16.04.2008, 21:11
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
а какая разница, в классе - не вклассе...

Код:
obj={prop1:"значение1", prop2:1000, prop3:{prop2:234}, prop4:null}
trace(obj.prop3.prop2) // 234

Старый 16.04.2008, 21:18
futurator вне форума Посмотреть профиль Отправить личное сообщение для futurator Найти все сообщения от futurator
  № 3  
Ответить с цитированием
futurator
 
Аватар для futurator

Регистрация: Mar 2008
Сообщений: 27
Поясню: например хочу создать класс для игры. Класс допустим Human, в котором иерархически расписаны объекты в него входящие, типа Head, Body и тд. В то же время, каждый объект включает в себя под_объекты, например: в объекте Head существует под_объект Eyes, который уже несет в себе свои переменные (например color_, для цвета глаз).
В итоге когда я создаю персонажа
Код:
Edd:Human = new Human();
чтобы все переменные автоматически инициализировались (через конструктор или иначе - не суть). И я обращался из кода к переменным например таким способом:
Код:
Edd.Head.Eyes.color_ = "green";
Может это попытка изобрести велосипед через ****? =)))

Старый 16.04.2008, 21:27
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 4  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Цитата:
Сообщение от futurator
я обращался из кода к переменным например таким способом:
Код:
Edd.Head.Eyes.color_ = "green";
А как создавались объекты?

Можно

Код:
obj={}
obj.obj2={}
obj.obj2.prop=123
trace(obj.obj2.prop) // 123
Нельзя

Код:
obj.obj2.prop=123
trace(obj.obj2.prop) // undefined
или

Код:
obj={}
obj.obj2.prop=123
trace(obj.obj2.prop) // undefined

Старый 16.04.2008, 21:35
futurator вне форума Посмотреть профиль Отправить личное сообщение для futurator Найти все сообщения от futurator
  № 5  
Ответить с цитированием
futurator
 
Аватар для futurator

Регистрация: Mar 2008
Сообщений: 27
Ну я пытался изобразить такую штуку:
Код:
var Head:Object = { Eyes:Object }
или
Код:
var Head:Object = { Eyes:objEyes }
где objEyes был заранее описан как объект со своими переменными.

Старый 16.04.2008, 22:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Head, Eyes должны быть классами, а ссылки на них — поля классов.
Код:
var human:Human = new Human();
human.head.eyes.color = 0xFF0000;
Код:
class Human {
    public function Human() {
        this._head = new Head();
    }

    private var _head:Head;

    public function get head():Head {
        return this._head;
    }
}
И т.д.

Старый 16.04.2008, 22:40
futurator вне форума Посмотреть профиль Отправить личное сообщение для futurator Найти все сообщения от futurator
  № 7  
Ответить с цитированием
futurator
 
Аватар для futurator

Регистрация: Mar 2008
Сообщений: 27
Здорово, спасибо.
А можно обойтись только конструкторами? Ну тоесть их будет достаточно для того, чтобы потом обращаться к переменным таким образом:
Код:
Human.Head.Eyes.color_ = "green";
?

Старый 16.04.2008, 22:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, нужно использовать геттеры.

Старый 16.04.2008, 23:07
futurator вне форума Посмотреть профиль Отправить личное сообщение для futurator Найти все сообщения от futurator
  № 9  
Ответить с цитированием
futurator
 
Аватар для futurator

Регистрация: Mar 2008
Сообщений: 27
А как класс Human узнает о существовании класса Head? #include? или как-то по-другому?

Старый 16.04.2008, 23:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Он этот самый Head и создает в конструкторе, я же вам пример написал. Head в конструкторе создает Eyes и т.д.

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

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

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


 


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


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