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

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

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

Регистрация: Oct 2006
Сообщений: 43
По умолчанию Получение списка функций по Евенту на объекте.

Здраствуйте.
Например у нас есть
mc.addEventListener(MouseEvent.CLICK, this.onClick)
mc.addEventListener(MouseEvent.CLICK, this.onClick2)

возможноли из onClick функции узнать что есть ещё и onClick2?
и возможноли вообще получить список функций по Евенту на объекте?

Нужно для того что бы не запоминать названия всех повешаных функций и просто удалять все повешаные по евенту на объект функции

Добавлено через 1 минуту
или есть функция чтобы стёрла всё что навешано на Евент у объекта?
а стандартные
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

подразумевает обязательное введение названия функции

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Самый простой способ все повешанные подписки после осуществления события чистишь вызовом метода содержащим их удаление. removeEventListener удалит подписку если она есть и не будет ругаться если ее нет.
Код AS3:
mc = event.target as DisplayObject;
mc.removeEventListener(MouseEvent.CLICK, this.onClick) 
mc.removeEventListener(MouseEvent.CLICK, this.onClick2)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 15.01.2009, 11:41
jp_job вне форума Посмотреть профиль Отправить личное сообщение для jp_job Найти все сообщения от jp_job
  № 3  
Ответить с цитированием
jp_job

Регистрация: Oct 2006
Сообщений: 43
тут дело всё в том что реализую хукБуттон. поетому или писать чтобы функции ети все запоминались или ешё много другово, прощеб было стиреть все..
какбы есть класс который я выставил всем кнопкам
Код AS3:
package org.softservice.web.classes
{
	import fl.controls.Button;
	import flash.events.*;
	import Global;
 
	/**
	 * ...
	 * @author DefaultUser (Tools -> Custom Arguments...)
	 */
	public class HookButton extends Button
	{
		public var onClickHook:String = "";
		public var parametres:Object = new Object;
		public var enableFunction:Boolean = true;
		public var enable:Boolean = true;
 
		public function HookButton():void {
			addEventListener(MouseEvent.CLICK, this.onClick) 
		}
 
		public function onClick(e:MouseEvent) {
			if (this.onClickHook != "" ) {
				this.enable = Global.sChatHook[onClickHook](this.parametres) 
				trace("enableFunction " + this.enableFunction)
				if (!this.enable) {
					this.removeEventListener(MouseEvent.CLICK, this.onClick, true) 
					trace("BOTH ")
				}
			}
		}
	}
}
ето демо класса.. а также есть другие классы в которых назначаются события на кнопки по евенту MouseEvent.CLICK, так вот смысл в том что если надо хук просто стирает все обработчики или запрещает им действовать

конечно я знаю как реализовать через ифы.. дописав 1 2 строчки в каждую функцию, но нельзыли прям отсюда чтонибудь придумать?


Последний раз редактировалось jp_job; 15.01.2009 в 11:56.
Старый 15.01.2009, 13:08
NePridymal вне форума Посмотреть профиль Отправить личное сообщение для NePridymal Найти все сообщения от NePridymal
  № 4  
Ответить с цитированием
NePridymal
 
Аватар для NePridymal

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
Ну как вариант - переопределить в HookButton метод addEventListener и в переопределенном методе запоминать все подписи на событие. И ввести метод для удаления всех запомненных подписей. Прийдется один раз в классе HookButton дописать несколько строчек и все.

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

Регистрация: Oct 2006
Сообщений: 43
решил неким другим способом без запоминания функций.
Просто блокирую дальнейшее распространение Евента и всё) Еле нашёл это)

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

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

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


 


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


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