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

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

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

Регистрация: Oct 2009
Сообщений: 72
По умолчанию Обработчик click для новых объектов

Дело в том, что я создаю программно кнопки. Присваиваю им id & label, но как можно назначить им на обработчик клика какую-нибудь функцию?

Старый 14.10.2009, 16:53
Gubber вне форума Посмотреть профиль Отправить личное сообщение для Gubber Посетить домашнюю страницу Gubber Найти все сообщения от Gubber
  № 2  
Ответить с цитированием
Gubber

Регистрация: Sep 2000
Адрес: Россия, Обнинск
Сообщений: 84
Отправить сообщение для Gubber с помощью ICQ
При создании объекта можно вызвать вот такой код для кнопки
Код AS3:
button.addEventListener(MouseEvent.CLICK, clickFunction)
где button - это id кнопки
или для самой кнопки
Код AS3:
<mx:Button id="button" label="buttonLabel"  сlick="clickFunction(event)"  />
__________________
flex vs java
ICQ#65310126

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

Регистрация: Oct 2009
Сообщений: 72
Возникло затруднение
Первый вариант мне и нужен, ибо кнопочки создаются так:
Код AS3:
		import mx.controls.Button;
		public var b:Button = new Button();
 
		public function clickFunction(){
			B1.label = "123";  //Вот тут дебагер флекса говорит 1120: Обращение несуществующего свойства B1.
		}
 
		public function CreateButton():void{
		b.id = "B1";
		b.label = "Click Me";
		b.addEventListener(MouseEvent.CLICK, clickFunction()); //Вот тут нужно вызывать метод addEventListener к b или B1 ?
		addChild(b);
		}
...
<mx:Button x="341" y="142" id="button1" label="CreateButton" click="CreateButton();"/>
Ошибка, выдаваемая приложением:
Цитата:
TypeError: Error #2007: Параметр listener не должен быть равен нулю.
at flash.events::EventDispatcher/addEventListener()
at ContactManager/CreateButton()[C:\Users\SoWa\Documents\Flex Builder 3\ContactManager\src\ContactManager.mxml:20]
at ContactManager/__button1_click()[C:\Users\SoWa\Documents\Flex Builder 3\ContactManager\src\ContactManager.mxml:48]


Последний раз редактировалось _SoWa; 14.10.2009 в 17:37.
Старый 14.10.2009, 17:36
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Странно, вообще-то clickFunction обязательно должен быть описан с аргументом event типа MouseEvent.
Листенера добавлять к b.
В clickFunction обращаться event.currentTarget.label = "123";

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

Регистрация: Oct 2009
Сообщений: 72
Спасибо! Код начинает получаться похожим на правду...
Код AS3:
		import mx.controls.Button;
		public var b:Button = new Button();
 
		public function clickFunction(event:MouseEvent){
			event.currentTarget.label = "123";
		}
 
 
 
		public function CreateButton():void{
		b.id = "B1";
		b.label = "Click Me";
		b.addEventListener(MouseEvent.CLICK, clickFunction(/*Тут как прописать аргумент? event или MouseEvent флекс не разрешает*/));
		addChild(b);
		}

Старый 14.10.2009, 17:50
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Тут без аргумента
Код AS3:
b.addEventListener(MouseEvent.CLICK, clickFunction);

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

Регистрация: Oct 2009
Сообщений: 72
Работает! Спасибо большое!
И уже последний теоретический вопрос: для хранения индивидуальной информации о созданом объекте разумно ли использовать setStyle & getStyle?
Например, каждой кнопочке я буду присваивать такой "невидимый параметр", например "action" и в него писать нужную мне инфу, а из функции-обработчика эту инфу доставать?
Это работает, я попробовал, но с точки зрения оптимальности это как будет?


Последний раз редактировалось _SoWa; 14.10.2009 в 18:10.
Старый 15.10.2009, 10:50
yorlin вне форума Посмотреть профиль Отправить личное сообщение для yorlin Найти все сообщения от yorlin
  № 8  
Ответить с цитированием
yorlin
 
Аватар для yorlin

Регистрация: Nov 2008
Сообщений: 109
А зачем вам id для кнопки созданной при помощи AS? Ее название по смыслу и есть id.

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

Регистрация: Oct 2009
Сообщений: 72
А, правда, туплю ))

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

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

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


 


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


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