![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2010
Сообщений: 430
|
Здравствуйте.
Нужно по клику по объекту должно срабатывать событие и передавать id объекта. Подскажите как это можно сделать? Если есть на примете ссылочка с примером, еще лучше )
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
http://www.flasher.ru/forum/blog.php?b=239
Мне больше всего нравится вариант - завести поле id у обьекта и выдрать его как event.currentTarget.id
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Событие:
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; } } } myObject.addEventListener(SomeEvent.DO_SOMETHING, myObjectHandler); private function myObjectHandler(e:SomeEvent):void{ trace(e.property_1, e.property_2); }
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 22.02.2012 в 13:26. |
|
|||||
|
ну, внутри себя свой айди не так сложно найти )
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Забудь про onClick. Этот код я просто скопировал из своих старых примеров. Даже не подумал, что в контексте этой темы он будет играть какую-то роль. Хотел, чтобы топикстартер обратил внимание именно на эту строчку:
Даже, если на то пошло - по поводу id обьекта по которому кликнули:
private function onClick(e:MouseEvent):void { this.dispatchEvent(new SomeEvent(SomeEvent.DO_SOMETHING, (e.target as MyClass).id)); } Теперь можно вешать слушатель SomeEvent.DO_SOMETHING на владельца "кликабельного" обьекта и получать айди нужного обьекта. Ведь, как я понял, именно это нужно в данном случае... Добавлено через 14 минут Даже, если "кликабельный" обьект САМ должен отправлять событие, то тогда еще проще: Хотя, такие вещи я обычно не использую, так как в прослушивателе можно получить нужное свойство через e.target, как написал выше.
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 22.02.2012 в 14:02. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Т.е. ради someEvent.property_1 вместо e.target.id такой огород городить?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Повторюсь:
Цитата:
В другом случае: контроллер получает событие от вьюшки: по каком из ее обьектов кликнули. Зачем вьюшку засорять разными паблик selectedId, someClickedValue или wasOrNoAbraKadabraClicked, которые нужны лишь для того чтобы контроллер их мог по разу дернуть, получив какое-то событие. Вьюшка отправляет пользовательское событие с нужными мне параметрами. Добавлено через 2 минуты Со слов автора Цитата:
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 22.02.2012 в 14:35. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|