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

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

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
По умолчанию как сделать, чтобы вместо instance6 писало само имя переменной экземпляра класса?

существует слушатель:
Код AS3:
_button1.addEventListener(MouseEvent.CLICK, mouseClickListener);
где _button1 имеет тип Button;

какое свойство и у какого объекта в функции mouseClickListenera вернёт именно название _button1?
e.currentTarget возвращает [Object Button], а e.currentTarget.name возвращает instance6 вместо самого имени кнопки (_button1)... как сделать, чтобы возвращалось именно само имя экземпляра? а то мне приходится цепляться в условии за сам текст текстового поля, вместо названия кнопки, а это не правильно... :\

Код AS3:
 
		private function mouseClickListener(e:MouseEvent):void 
		{	
 
 
			if (e.target.text == "arrays"){
 
				_floatingCont = new FloatingCont("C://Arrays.as");
				addChild(_floatingCont);
 
			}
			if (e.target.text == "textFields") {
 
				_floatingCont = new FloatingCont("C://textForLoad.txt");
				addChild(_floatingCont);
 
			}
 
		}


Последний раз редактировалось nelco; 13.09.2015 в 08:39.
Старый 13.09.2015, 04:45
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
_button1 - это не имя экземпляра кнопки, это имя переменной, которая хранит ссылку на объект кнопка и бессмысленно пытаться получить название этой переменной, т.к. это просто "хранитель ссылки", коих может быть сколько угодно с какими угодно именами. Что можно сделать, так это записать желаемое имя в свойство name.

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
Цитата:
Сообщение от udaaff Посмотреть сообщение
_button1 - это не имя экземпляра кнопки
я думал ИМЯ ЭКЗЕМПЛЯРА это и есть ИМЯ ПЕРЕМЕННОЙ :\ если у меня написано в поле класса private var _button1:Button = new Button(); , то _button1 - это имя ПЕРЕМЕННОЙ экземпляра? а имя экземпляра - это _button1.name = "name"? как коду отличать _button1.addEvetnListener от _button2.addEvenlistener без присваивания имени _button1 и button2? за сами названия _button1 и _button2 нельзя никак зацепиться без присваивания имени?


Последний раз редактировалось nelco; 13.09.2015 в 08:38.
Старый 13.09.2015, 11:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
		private function mouseClickListener(e:MouseEvent):void 
		{	
 
 
			if (e.currentTarget == _button1){
 
				_floatingCont = new FloatingCont("C://Arrays.as");
				addChild(_floatingCont);
 
			}
			if (e.currentTarget == _button2) {
 
				_floatingCont = new FloatingCont("C://textForLoad.txt");
				addChild(_floatingCont);
 
			}
 
		}
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Имя экземпляра(Instance name) было придумано исключительно для Flash IDE, для кода в кадрах. Больше не знаю мест, где оно используется.
Получать имя переменной нет смысла, имея на неё ссылку.
Вообще, судя по всему вы хотели сделать как-то так

Код AS3:
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;
   }
}
или как Wolsh написал выше.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 13.09.2015 в 11:43.
Старый 13.09.2015, 19:46
nelco вне форума Посмотреть профиль Отправить личное сообщение для nelco Найти все сообщения от nelco
  № 6  
Ответить с цитированием
nelco
 
Аватар для nelco

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
спасибо! я хотел сделать так, как написал Wolsh (т.е. меньше кода, без присваивания параметра .name или .label), но e.currentTarget возвращало мне [object Button], поэтому я думал, что от обеих кнопок e.currentTarget будет возвращать одинаково [object Button] и не получится их так отличать, как написал Wolsh, но оказывается - получается. Теперь вот пробую сделать удаление контейнера с текстом (который открывается при нажатии на эти кнопки) и выходит ошибка, буду опять спрашивать в новой теме если сейчас не разберусь сам. Спасибо за ответы, за помощь!

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
где _button1 имеет тип Button;
Цитата:
(т.е. меньше кода, без присваивания параметра .name или .label)
Тоесть ваши кнопки без заголовка?
__________________
There is no thing in this world that is not simple.

Старый 14.09.2015, 01:50
nelco вне форума Посмотреть профиль Отправить личное сообщение для nelco Найти все сообщения от nelco
  № 8  
Ответить с цитированием
nelco
 
Аватар для nelco

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Тоесть ваши кнопки без заголовка?
заголовок - это label? да, без него... для чего он нужен? чтобы обращаться к кнопке? по имени переменной нельзя обратиться будет? я просто только начинаю изучать AS3 поэтому вообще ничего ещё не знаю.

Старый 14.09.2015, 08:52
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 9  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от nelco Посмотреть сообщение
заголовок - это label? да, без него... для чего он нужен? чтобы обращаться к кнопке?
чтобы имея ссылку на кнопку, понять что это за кнопка, как вы поймете что это за кнопка, если у вас все кнопки хранятся не в переменных, а, допустим, в массиве?

Старый 14.09.2015, 13:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
nelco, для начала Вам хорошо бы понять, что такое ссылка, объект, экземпляр, переменная, свойство. Изучать программирование методом тыка чертовски занимательно, но крайне непродуктивно. Советую почитать книги, или хотя бы статьи в интернет.
Все объекты в AS3 являются экземплярами классов (и сами классы тоже могут рассматриваться как объекты). Для обращения к этим экземплярам используются ссылки. Ссылки хранятся в переменных, которые могут быть как зафиксированными свойствами экземпляров или классов, так и временными "локальными" переменными функций — к таким переменным нет доступа извне функции, и живут они только то время, пока выполняется функция. Ссылка на один и тот же объект может храниться в любом количестве переменных в самых разных "местах" программы. Например, все визуальные объекты имеют свойство .stage, хранящее ссылку на сцену (область отображения плеера). Сцена всегда одна, а ссылки на нее могут иметь тысячи объектов в своих собственных переменных. Из этого надо понять, почему объекты ничего не знают о ссылках на них, и нельзя спросить у объекта это вот "_button1". Потому что может быть он одновременно и "_button_А" и еще чёрти что. Мало того, переменная потому и "переменная", что в нее в любой момент может быть записана ссылка на другой объект, и тогда Ваша _button1 перестанет быть как-то вообще связанной с данной конкретной кнопкой.
Физически, ссылка — это адрес объекта в памяти, номер байта в памяти, с которого начинается описание объекта. У объектов больше нет никаких собственных уникальных имён, по которым можно было бы обратиться к ним из любого места программы.
Есть фиксированное свойство .name, которое является переменной строкового типа и может хранить какую-то строку. Но эта строка не уникальна, то есть Вы можете ВСЕ свои кнопки "назвать" одинаково, плееру до лампочки, что Вы туда записываете.
Да, еще запомните, что переменные могут хранить не только ссылки на объекты, но и значения так называемых "простых типов" — строки и числа, которые "как бы" сами по себе не являются объектами. То есть переменные типа :String и :Number (:int, :uint) не хранят ссылку, а просто число или строку.
С другой стороны, ссылки могут храниться не только в формально объявленных переменных (var), но и в ячейках массивов. Когда все ссылки на объект исчезают (хранящие их переменные обнуляются или начинают ссылаться на другой объект, или объект-"хозяин" переменных удаляется), то такой объект будет автоматически удален из памяти, чтобы не загромождать ее. Поскольку к нему больше нет доступа и он "никому не нужен".
__________________
Reality.getBounds(this);

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

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

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


 


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


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