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

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

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

Регистрация: Nov 2010
Сообщений: 430
Question Пользовательские события. Передача параметра.

Здравствуйте.

Нужно по клику по объекту должно срабатывать событие и передавать id объекта.
Подскажите как это можно сделать? Если есть на примете ссылочка с примером, еще лучше )
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.

Старый 22.02.2012, 13:14
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
http://www.flasher.ru/forum/blog.php?b=239
Мне больше всего нравится вариант - завести поле id у обьекта и выдрать его как event.currentTarget.id
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Событие:
Код AS3:
package {
	import flash.events.Event;
 
	/**
	 * ...
	 * @author HardCoder
	 */
	public final class SomeEvent extends Event {
		public static const DO_SOMETHING:String = "doSomething";
 
		private var _property_1:uint;
		private var _property_2:Boolean;
 
		public function SomeEvent(type:String, property_1:uint, property_2:Boolean, bubbles:Boolean = false, cancelable:Boolean = false){
			super(type, bubbles, cancelable);
 
			this._property_1 = property_1;
			this._property_2 = property_2;
		}
 
		override public function clone():Event {
			return new SomeEvent(this.type, this._property_1, this._property_2, this.bubbles, this.cancelable);
		}
 
		override public function toString():String {
			return formatToString("SomeEvent", "property_1", "property_2", "type", "bubbles", "cancelable", "eventPhase");
		}
 
		public function get property_1():uint {
			return this._property_1;
		}
 
		public function get property_2():Boolean {
			return this._property_2;
		}
	}
}
Прослушивание:
Код AS3:
myObject.addEventListener(SomeEvent.DO_SOMETHING, myObjectHandler);
 
private function myObjectHandler(e:SomeEvent):void{
	trace(e.property_1, e.property_2);
}
Диспетчеризация:
Код AS3:
private function onClick(e:Event):void {
	this.dispatchEvent(new SomeEvent(SomeEvent.DO_SOMETHING, 1203, true));
}
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 22.02.2012 в 13:26.
Старый 22.02.2012, 13:46
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
HardCoder, а как ты в onClick узнаешь нужный id?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
ну, внутри себя свой айди не так сложно найти )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Забудь про onClick. Этот код я просто скопировал из своих старых примеров. Даже не подумал, что в контексте этой темы он будет играть какую-то роль. Хотел, чтобы топикстартер обратил внимание именно на эту строчку:
Код AS3:
this.dispatchEvent(new SomeEvent(SomeEvent.DO_SOMETHING, 1203, true));
Даже, если на то пошло - по поводу id обьекта по которому кликнули:
Код AS3:
private function onClick(e:MouseEvent):void {
	this.dispatchEvent(new SomeEvent(SomeEvent.DO_SOMETHING, (e.target as MyClass).id));
}
Добавлено через 2 минуты
Теперь можно вешать слушатель SomeEvent.DO_SOMETHING на владельца "кликабельного" обьекта и получать айди нужного обьекта. Ведь, как я понял, именно это нужно в данном случае...

Добавлено через 14 минут
Даже, если "кликабельный" обьект САМ должен отправлять событие, то тогда еще проще:
Код AS3:
private function onClick(e:MouseEvent):void {
	this.dispatchEvent(new SomeEvent(SomeEvent.DO_SOMETHING, this.id));
}
Хотя, такие вещи я обычно не использую, так как в прослушивателе можно получить нужное свойство через e.target, как написал выше.
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 22.02.2012 в 14:02.
Старый 22.02.2012, 14:21
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Т.е. ради someEvent.property_1 вместо e.target.id такой огород городить?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Повторюсь:
Цитата:
Хотя, такие вещи я обычно не использую, так как в прослушивателе можно получить нужное свойство через e.target, как написал выше.
Это значит, что слушая клик по обьекту в обработчике я получаю его id через e.target.
В другом случае: контроллер получает событие от вьюшки: по каком из ее обьектов кликнули. Зачем вьюшку засорять разными паблик selectedId, someClickedValue или wasOrNoAbraKadabraClicked, которые нужны лишь для того чтобы контроллер их мог по разу дернуть, получив какое-то событие. Вьюшка отправляет пользовательское событие с нужными мне параметрами.

Добавлено через 2 минуты
Со слов автора
Цитата:
Нужно по клику по объекту должно срабатывать событие и передавать id объекта.
, я понял, что он не хочет дергать айди через целевой обьект события, по каким-то причинам(как например в случае с вьшкой)
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 22.02.2012 в 14:35.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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