слушатель vs обработчик в android
в чем разница между слушателем и обработчиком?
Я много искал, но не смог найти подходящего объяснения. Где я могу использовать прослушиватель и где я могу использовать обработчик в Android?
Я также прошел по следующей ссылке:
обработчик событий, прослушиватель событий и регистрация событий относятся к одному и тому же?
где я могу получить сравнительное обсуждение этих двух пунктов? Также, смогите кто-нибудь скажет мне, какие различные типы слушателей и обработчиков доступны?
2 ответов
ряд классов ActionScript имеют то, что называется событиями. Событие вызывается объектом, когда происходит определенное событие. Например, когда кто-то парит над символом кнопки в SWF, кнопка.событие onRollOver вызывается для данного экземпляра Button. Когда мышь перемещается в другое место, кнопка.событие onRollOut вызывается для того же экземпляра. Эти события происходят независимо от того, замечает их кто-нибудь или нет. Если вы действительно хотите что-то сделать в ответ на событие, вы должны управлять им с помощью обработчика событий или прослушиватель событий. Выбор между этими двумя определяется объектом-некоторые объекты ожидают обработчиков, некоторые слушатели - поэтому нажмите ссылку на язык Ol’ ActionScript, когда сомневаетесь. Обработчики относительно просты, но по какой-то причине слушатели, кажется, сначала озадачивают людей.
Обработчики Событий
самые популярные события, вероятно, принадлежат классам Button и MovieClip, которые разделяют многие из то же самое (клип может быть кнопкой, но не наоборот). Чтобы справиться с кнопкой.onrelease событие, все, что вам нужно сделать, это перетащить символ кнопки на сцену и дать ему имя экземпляра через инспектор свойств. Используйте это имя в сценарии фрейма для назначения функции событию.
myButton.onRelease = function() {
// do something
}
другие события кнопки работают так же, как события MovieClip и все события, которые требуют обработчиков событий.
любое количество событий может быть обработано. Просто назначьте функция для каждого события, по мере необходимости. Кнопка, которая реагирует на опрокидывание, отпускание и выкатывание, например, может выглядеть так ...
myButton.onRollOver = function() {
// do something
}
myButton.onRelease = function() {
// do something
}
myButton.onRollOut = function() {
// do something
}
Прослушиватели Событий
управление прослушивателями событий требует еще нескольких шагов. Прослушиватель выполняется с помощью экземпляра универсального объекта. Этот объект действует как связующее звено между, по крайней мере, двумя другими: объектом, вызывающим событие, и любыми объектами, прослушивающими событие. Давайте посмотрим на MovieClipLoader образец.
var mcl:MovieClipLoader = new MovieClipLoader();
на данный момент мы объявили переменную mcl, которая указывает на экземпляр MovieClipLoader. Теперь мы объявим другую переменную, mclListener, которая указывает на экземпляр Object. (Звучит смешно, я знаю, но мы создаем объект.)
var mclListener:Object = new Object();
этот общий объект теперь станет нашей связью. На данный момент код выглядит очень похожим на подход обработчика событий.
mclListener.onLoadInit = function() {
// do something
}
я мог бы выбрать любое событие из Класс MovieClipLoader, это действительно не имеет значения. Здесь следует заметить, что универсальный объект обрабатывает событие от имени экземпляра оперативного класса. С помощью обработчиков событий экземпляр оперативного класса обрабатывает собственные события.
теперь, когда у нас есть наш слушатель, и теперь, когда функция была назначена одному из ее событий от имени нашего экземпляра MovieClipLoader, нам просто нужно подписаться на слушателя mcl.
mcl.addListener(mclListener);
сделано. Давайте посмотрим, что все в один дубль:
var mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function() {
// do something
}
mcl.addListener(mclListener);
чтобы прослушать более одного события, просто следуйте примеру подхода обработчика событий.
var mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadStart = function() {
// do something
}
mclListener.onLoadProgress = function() {
// do something
}
mclListener.onLoadInit = function() {
// do something
}
mcl.addListener(mclListener);
Ref:http://www.quip.net/blog/2006/flash/event-handlers-listeners
вы также можете проверить это yahoo ответ
основное различие заключается в том, что обработчики событий пусть сам исходный объект сделайте что-нибудь в ответ на событие, тогда как слушатели событий пусть другие объекты что-то в ответ на события, происходящие в объекте.
например: ваша деятельность имеет кнопку. Если вы хотите свой активность для обработки, когда кто-то касается кнопки, вы используете прослушиватель событий (выполнив btn.setOnTouchListener(...)). Но, если вы хотите создайте специализированную кнопку (например, ту, которая выглядит как собака и лает при прикосновении), вы можете создать подкласс кнопки и реализовать ее обработчик событий onTouchEvent(...). В этом последнем случае кнопка сама будет обрабатывать свое сенсорное событие.