|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
как сделать, чтобы вместо instance6 писало само имя переменной экземпляра класса?
существует слушатель:
где _button1 имеет тип Button; какое свойство и у какого объекта в функции mouseClickListenera вернёт именно название _button1? e.currentTarget возвращает [Object Button], а e.currentTarget.name возвращает instance6 вместо самого имени кнопки (_button1)... как сделать, чтобы возвращалось именно само имя экземпляра? а то мне приходится цепляться в условии за сам текст текстового поля, вместо названия кнопки, а это не правильно... :\ Последний раз редактировалось nelco; 13.09.2015 в 08:39. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
_button1 - это не имя экземпляра кнопки, это имя переменной, которая хранит ссылку на объект кнопка и бессмысленно пытаться получить название этой переменной, т.к. это просто "хранитель ссылки", коих может быть сколько угодно с какими угодно именами. Что можно сделать, так это записать желаемое имя в свойство name.
|
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
я думал ИМЯ ЭКЗЕМПЛЯРА это и есть ИМЯ ПЕРЕМЕННОЙ :\ если у меня написано в поле класса private var _button1:Button = new Button(); , то _button1 - это имя ПЕРЕМЕННОЙ экземпляра? а имя экземпляра - это _button1.name = "name"? как коду отличать _button1.addEvetnListener от _button2.addEvenlistener без присваивания имени _button1 и button2? за сами названия _button1 и _button2 нельзя никак зацепиться без присваивания имени?
Последний раз редактировалось nelco; 13.09.2015 в 08:38. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
Имя экземпляра(Instance name) было придумано исключительно для Flash IDE, для кода в кадрах. Больше не знаю мест, где оно используется.
Получать имя переменной нет смысла, имея на неё ссылку. Вообще, судя по всему вы хотели сделать как-то так var button:Button = new Button(); button.label = "В игру!"; var button2:Button = new Button(); button2.label = "Выйти..."; button2.x += button1.width; addChild(button); addChild(button2); button.addEventListener(MouseEvent.CLICK, onButtonHit); button2.addEventListener(MouseEvent.CLICK, onButtonHit); function onButtonHit(e:MouseEvent):void { var label:String = (e.currentTarget as Button).label; switch(label) { case "В игру!": //Заходим в игру break; case "Выйти...": //Выходим break; } }
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 13.09.2015 в 11:43. |
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
спасибо! я хотел сделать так, как написал Wolsh (т.е. меньше кода, без присваивания параметра .name или .label), но e.currentTarget возвращало мне [object Button], поэтому я думал, что от обеих кнопок e.currentTarget будет возвращать одинаково [object Button] и не получится их так отличать, как написал Wolsh, но оказывается - получается. Теперь вот пробую сделать удаление контейнера с текстом (который открывается при нажатии на эти кнопки) и выходит ошибка, буду опять спрашивать в новой теме если сейчас не разберусь сам. Спасибо за ответы, за помощь!
|
|
|||||
Цитата:
Цитата:
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
заголовок - это label? да, без него... для чего он нужен? чтобы обращаться к кнопке? по имени переменной нельзя обратиться будет? я просто только начинаю изучать AS3 поэтому вообще ничего ещё не знаю.
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
чтобы имея ссылку на кнопку, понять что это за кнопка, как вы поймете что это за кнопка, если у вас все кнопки хранятся не в переменных, а, допустим, в массиве?
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
nelco, для начала Вам хорошо бы понять, что такое ссылка, объект, экземпляр, переменная, свойство. Изучать программирование методом тыка чертовски занимательно, но крайне непродуктивно. Советую почитать книги, или хотя бы статьи в интернет.
Все объекты в AS3 являются экземплярами классов (и сами классы тоже могут рассматриваться как объекты). Для обращения к этим экземплярам используются ссылки. Ссылки хранятся в переменных, которые могут быть как зафиксированными свойствами экземпляров или классов, так и временными "локальными" переменными функций — к таким переменным нет доступа извне функции, и живут они только то время, пока выполняется функция. Ссылка на один и тот же объект может храниться в любом количестве переменных в самых разных "местах" программы. Например, все визуальные объекты имеют свойство .stage, хранящее ссылку на сцену (область отображения плеера). Сцена всегда одна, а ссылки на нее могут иметь тысячи объектов в своих собственных переменных. Из этого надо понять, почему объекты ничего не знают о ссылках на них, и нельзя спросить у объекта это вот "_button1". Потому что может быть он одновременно и "_button_А" и еще чёрти что. Мало того, переменная потому и "переменная", что в нее в любой момент может быть записана ссылка на другой объект, и тогда Ваша _button1 перестанет быть как-то вообще связанной с данной конкретной кнопкой. Физически, ссылка — это адрес объекта в памяти, номер байта в памяти, с которого начинается описание объекта. У объектов больше нет никаких собственных уникальных имён, по которым можно было бы обратиться к ним из любого места программы. Есть фиксированное свойство .name, которое является переменной строкового типа и может хранить какую-то строку. Но эта строка не уникальна, то есть Вы можете ВСЕ свои кнопки "назвать" одинаково, плееру до лампочки, что Вы туда записываете. Да, еще запомните, что переменные могут хранить не только ссылки на объекты, но и значения так называемых "простых типов" — строки и числа, которые "как бы" сами по себе не являются объектами. То есть переменные типа :String и :Number (:int, :uint) не хранят ссылку, а просто число или строку. С другой стороны, ссылки могут храниться не только в формально объявленных переменных (var), но и в ячейках массивов. Когда все ссылки на объект исчезают (хранящие их переменные обнуляются или начинают ссылаться на другой объект, или объект-"хозяин" переменных удаляется), то такой объект будет автоматически удален из памяти, чтобы не загромождать ее. Поскольку к нему больше нет доступа и он "никому не нужен".
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 04:29. |
|
« Предыдущая тема | Следующая тема » |
|
|