![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
Main.as
package { public class Main { public static var mainObj:Main; public var numberOfUsers:int; public function Main():void { mainObj = this; new User(); } } } Как положено делать такие вещи? |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
а как вы потом будуте обращаться к экземпляру класса User()?
чтобы обратиться к главному классу, импортируйте его. |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
Это пример. В примере никак) А на практике- естественно "user= new User();"
Мне нужно обратиться не к главному классу(Main) а к экземпляру этого класса, который создается в конструкторе. Точнее к его свойствам, в примере это numberOfUsers. Это так и надо делать как сделал я? Или есть способ проще, что-нибудь типа main.numberOfUsers? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
"Па, где Ма? ... Ма, а где Па? ... Па, а где Ма?"
Нормальный родитель, посылая ребенка в магазин, дает ему список, пакетик и деньги. Ненормальный - ключ, чтоб он мог вернуться и задавать идиотские вопросы типа "а где деньги?" Что это за странная архитектура, когда дети докучают родителям? У вас дети управляют ситуацией или исполняют наказы родителя? Если вашему ребенку user действительно НАДО что-то знать, так потрудитесь сказать ему об этом CРАЗУ, для этого и существуют параметры, передаваемые в его конструктор)))
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
еще по идее есть такой вариант, хотя Wolsh прав, конечно, можно либо попробовать сделать переменную к которой нужно обратиться статической, либо в user добавить слушателя присоединения к stage, а потом уже обращаться к главному и его свойствам)))
|
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
Цитата:
package { public class Main { public var numberOfUsers:int; public var userAge:int; public var userSex:String; public function Main():void { new UserQuestionary(this); } } } |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Цитата:
И действительно, если при создании юзера какие-либо характеристики определяются исключительно в главном классе, то их разумно передавать в конструктор юзера для создания, и соответственно хранить их там. А вообще ваша программа это точная копия программы К.Мука про виртуальный зоопарк, там отлично рассказано, как правильно снабдить животное нужными характеристиками, и если это требуется запросить их. Последний раз редактировалось AlexDesinger; 18.03.2010 в 13:44. |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
У меня юзер - это игрок, он один. его характеристики логично хранить в главном классе. Отличие от зоопарка в том что у меня класс UserQuestionary получает много данных которые надо передать в основной класс.
Вобщем всем спасибо, я понял что вариант из первого поста допустим, другие варианты мне менее удобны. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Из первого поста? Это где экземпляр класса Юзер, созданный в экземпляре класса Мейн, идет обратно в Мейн, чтобы - внимание - сказать Мейну, что тот создал еще одного Юзера? О_о
В нормальной семье ребенка дожидаются из магазина и просят отчитаться. - Где колбаса? - Вот! - Где сдача? - Вот сдача! Это нормальная событийная модель. Ребенок что-то сделал и сообщил родителю, что задание выполнено. Родитель забрал то что его интересует (купленное на сдачу мороженое отнимать необязательно) От того, что ребенок прокрадется на кухню и втихаря сунет колбасу в холодильник, родители так и не узнают, что можно уже приглашать гостей. Подумайте об этом. Более чем странно выглядит класс Мейн, который - при наличии класса Юзер - хранит у себя СВОИ приватные переменные юзерПол и юзерВозраст. По-моему, более логично смотрится юзер.пол и юзер.возраст - не согласны? Впрочем, если Юзер вообще один (а зачем счетчик юзеров?) - то в нем просто нет смысла. Классы нужны прежде всего при повторяемости однотипных данных (ну или для инкапсуляции логики). Если Вы создаете тип данных "Юзер", то вообще непонятно, почему данные о Юзере хранятся в другом месте)) (но я и не знаю что Вы там задумали, да и имя класса изменили)) - так что не буду больше разглагольствовать))) Удачи.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 18.03.2010 в 17:51. |
|
|||||
|
Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
|
package { import flash.display.*; import flash.events.*; public class Main extends Sprite { private var userQuestionary:UserQuestionary = new UserQuestionary(); private var userAge:int; private var userSex:String; private var userState:String; public function Main () { userQuestionary.addEventListener(MyEvent.MY, questionaryCompleteHandler); userQuestionary.init(); } private function questionaryCompleteHandler (e:MyEvent):void { trace("Character created: age -"+e.age+", "+e.sex+", state - "+e.state);//выводит Character created: age -21, man, state - RF } } } package { import flash.events.*; public class UserQuestionary extends EventDispatcher { public static const GAME_OVER:String = "gameOver"; public function UserQuestionary () { } public function init():void { dispatchEvent(new MyEvent(MyEvent.MY,false,false,21,"man","RF"));//в реальной программе тут конечно будет что-то типа new MyEvent( MyEvent.MY, false, false, defineAge(), defineSex(),defineState()) } } } package { import flash.events.*; public class MyEvent extends Event { public static const MY:String = "myEvent"; public var age:int; public var sex:String; public var state:String; public function MyEvent (type:String, bubbles:Boolean = false, cancelable:Boolean = false, age:int = 18, sex:String = "man", state:String = "USA") { super(type, bubbles, cancelable); this.age = age; this.sex = sex; this.state = state; } } } P.S. Wolsh, спасибо за советы =) Последний раз редактировалось mickfallout; 19.03.2010 в 12:57. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|