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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Sep 2001
Сообщений: 99
Отправить сообщение для Churinga с помощью ICQ
По умолчанию Что такое листенер и чем его едят :)

Всвязи с предыдущей темой возник вопрос о листенерах. Кто-нибудь может объяснить поподробнее к чему их писобачивать можно и каков принцип их работы?

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

Регистрация: Apr 2003
Адрес: in the moon...
Сообщений: 1,263
Отправить сообщение для Sanik с помощью ICQ
Key.addListener

Доступность


Flash Player 6.

Синтаксис


Key.addListener (newListener)

Параметры


newListener Объект с методами onKeyDown и onKeyUp.

Возвращается


Ничего.

Описание


Метод, регистрирует объект, получающий уведомления onKeyDown и onKeyUp. При нажатии и отжатии клавиши, независимо от местонахождения фокуса ввода, во всех "слушающих" объектах, зарегистрированных при помощи addListener, вызываются методы onKeyDown или onKeyUp. Сложные объекты могут отслеживать вызовы клавиатуры. Если листенер newListener уже зарегистрирован, никаких изменений не происходит.

Пример


В примере создается новый листенер и описывается функция для onKeyDown and onKeyUp. В последней строке используется метод addListener method для регистрации листенера с объектом Key, получающим уведомление о нажатии и отжатии клавиши.

myListener = new Object();
myListener.onKeyDown = function () {
trace ("Клавиша нажата.");
}
myListener.onKeyUp = function () {
trace ("Клавиша отпущена.");
}
Key.addListener(myListener);
==============================================
RTFM!!!

Старый 11.12.2003, 12:27
Churinga вне форума Посмотреть профиль Отправить личное сообщение для Churinga Посетить домашнюю страницу Churinga Найти все сообщения от Churinga
  № 3  
Churinga
 
Аватар для Churinga

Регистрация: Sep 2001
Сообщений: 99
Отправить сообщение для Churinga с помощью ICQ
Цитата:
Key.addListener (newListener)
Вот интересно, а получается, что мувик тоже может быть этим самым newListener, так?
Листенер добавляется только к Key или еще к чему?
А к мувику можно добавить?
И вообще, в каких случаях листенер этот пользовать надо?
А хелп я и сама тебе хоть весь могу процитировать, только, боюсь, не влезет.

Старый 11.12.2003, 12:37
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
листенер - этот тот-кто-слушает :)
и все.

есть объекты которые говорят, а есть те которые слушают.
например объект Key выдает сообщения "onKeyDown" и "onKeyUp" всем кто его слушает.

если надо добавить к "слушателям" объека Key еще кого-то - делаем Key.addListener (newListener); где newListener может быть каким-угодно-объектом, лишь бы в нем были определены реакции на сообщения "onKeyDown" и "onKeyUp" (то есть newListener.onKeyDown = function () { ... } и newListener.onKeyUp= function () { ... })

вот тут в том числе про листенеры. на русском

Старый 11.12.2003, 12:54
Churinga вне форума Посмотреть профиль Отправить личное сообщение для Churinga Посетить домашнюю страницу Churinga Найти все сообщения от Churinga
  № 5  
Churinga
 
Аватар для Churinga

Регистрация: Sep 2001
Сообщений: 99
Отправить сообщение для Churinga с помощью ICQ
Ага, понятно, спасибо
Ну вот к примеру есть у меня куча кнопок, наводя мышкой на которые, я хочу получить измменение одного моего курсора на лругой мой же.
Я написала вот такое:

Код:
//--Общая функция вызова активного курсора --
	// clip - имя мувиклипа, загружаемого в качестве курсора.
MovieClip.prototype.cursor = function(clip){
	_root.attachMovie(clip,clip,5000);
	_root[clip]._y = _root._ymouse;
	_root[clip]._x = _root._xmouse;

	_root[clip].onEnterFrame = function(){
		this._x = _root._xmouse;
		this._y = _root._ymouse;
	}
}
//ф-ция, обеспечивающая мувиклипу курсор над кнопкой.
	// pos - имя кнопки или клипа, при наведении на которые совершается д-е
	// clip - имя мувиклипа, загружаемого в качестве курсора.
MovieClip.prototype.overButton = function(pos,clip){
	this[pos].onRollOver = function(){cursor(clip)}
	this[pos].onRollOut = function(){cursor("cursorMain")}
}
cursor("cursorMain");
ну и маусхайд ессно.

Вызывается она так в клипе:

overButton("DragButton1","cursorDrag");

Однако неудобно на каждую кнопь такое писать , хотя и мало.
Может можно addListener использовать? Или это максимальная оптимизация?

ЫЫх, чё-то не дають покоя мене енти листенеры

Старый 11.12.2003, 15:29
YuriiZelenev вне форума Посмотреть профиль Отправить личное сообщение для YuriiZelenev Посетить домашнюю страницу YuriiZelenev Найти все сообщения от YuriiZelenev
  № 6  
YuriiZelenev
 
Аватар для YuriiZelenev

Регистрация: Sep 2001
Адрес: Moi address ne dom i ne ulica...
Сообщений: 634
По умолчанию 2churinga, pro Listener'i

Vot kodik, nebolshoi - uveren, posmotrev - razbereshsya kak listeneri mojno use'at ..
Код:
/// 1/////////////////////////////////////////////////
//suda ne smotri! eto prosto muviki risuutca...
createEmptyMovieClip("someOtherMc", 12345);
with (someOtherMc) {
	lineStyle(0,0x000000,0),moveTo(24,0),beginFill(0x990000,70);
	lineTo(70,0),lineTo(95,40),lineTo(70,80),lineTo(24,80),lineTo(0,40),endFill();
}
dObj1={_x:someOtherMc._width,_y:someOtherMc._height};
for(var i=1;i<=3;i++){someOtherMc.duplicateMovieClip("mc"+i,12345+i,dObj1),dObj1._x+=someOtherMc._width,dObj1._y+=someOtherMc._height;}
///*1/////////////////////////////////////////////////
//Zapreshaem scale - tak kak - pozhe mi budem delat' vichesleniya osnovanie na koordinatiah mishki...
Stage.scaleMode = "noScale";
Stage.showMenu = false;
///
//chitat' nachinay ot suda... Sozdaem, prototyp....
MovieClip.prototype.doAll = function(a, r) {
	this._alpha=a, this._rotation=r;
};
//Sozdaem novii object. ("obj={}" - eto toje chto i "obj=new Object();" no koroche).
//I nadelyaem nash object dopolnitelnimi vozmojnostyami - slushat'.
ASbroadcaster.initialize(obj={});
//dobavlyaem listeneri  (slushateli)
obj.addListener(mc1),obj.addListener(mc2),obj.addListener(mc3);
obj.addListener(someOtherMc);
//Vizivaem funkciyu kajdie 1000ms/24fps=41msf
//Dunkciya - budet krutit' i izmenyat' alfu muvikam - v zavisimosti ot polojeniya mishki na osi _x v root'e.
var int1 = setInterval(function () {
	ease += Math.round(_root._xmouse-ease)*.1;
	var a = (ease/Stage.width)*100, r = (360*a)/100;
	// Peredaem nashe sobstvennoe "sobitie"-soobsheniya vsem kto slushaet (listneram) "doAll" i poputno otsilaem emu argumenti (v nashem sluchae "a"-alphu i "r"-rotation).
	obj.broadCastMessage("doAll", a, r);
}, 41);
///:NOTE: 
//mi vsegda mojem poluchit massiv listnerov objecta - vospolzovshis skritim massivom "_listeners".  k primeru - tak:
trace(obj._listeners);
__________________
Seek and you shall find Google
visit smilez.org :rolleyes:


Последний раз редактировалось YuriiZelenev; 11.12.2003 в 15:35.
Старый 11.12.2003, 21:00
Churinga вне форума Посмотреть профиль Отправить личное сообщение для Churinga Посетить домашнюю страницу Churinga Найти все сообщения от Churinga
  № 7  
Churinga
 
Аватар для Churinga

Регистрация: Sep 2001
Сообщений: 99
Отправить сообщение для Churinga с помощью ICQ
Цитата:
ASbroadcaster.initialize
А это зачем?

Старый 11.12.2003, 22:24
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 8  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
И так: - никого не слушай. Ни YuriiZelenev(а), ни – даже- свой внутренний голос, который нашептывает о каких-то addListener. Зачем они тебе нужны, если кнопки и так слушают мышку (onRollOver, onRollOut, e.t.c)? Заткни уши, и сделай так:
Код в первый фрейм:
Код:
 
Button.prototype.myCursor = function(cur){
	this.onRollOver = function(){
		Mouse.hide();
		_root.attachMovie(cur,"curs",1);
		curs.onEnterFrame = function(){
		curs._x = _root._xmouse;
		curs._y = _root._ymouse;
	}
	}
	this.onRollOut = function(){
		Mouse.show();
		curs.removeMovieClip();
	}
}
for(i=0;i<=3;i++){
_root["btn"+i].myCursor("c"+i);
}
При этом, присвой кнопкам имена "btn0", "btn1", e.t.c и "прилинкуй" своим курсорам в библиотеке имена "с0", "с1", "с2" и т.д. И это все! Больше ничего не надо. На кнопки тоже ничего не надо писать.
Если ты используешь вместо кнопок MovieClip(ы), измени в этом коде только одно слово: "Button" на "MovieClip".
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 12.12.2003, 14:49
Churinga вне форума Посмотреть профиль Отправить личное сообщение для Churinga Посетить домашнюю страницу Churinga Найти все сообщения от Churinga
  № 9  
Churinga
 
Аватар для Churinga

Регистрация: Sep 2001
Сообщений: 99
Отправить сообщение для Churinga с помощью ICQ
to sergwizard:
в моем случае используются совершенно различные кнопки в различных вложенных мувиклипах с различным местоположением и с различными курсорами onRollOver. Такое, как ты написал - это я и сама умею. Я здесь спрашиваю о листенерах и их применении, потому что хочу знать, как их использовать.

Старый 12.12.2003, 15:36
iLoveYou вне форума Посмотреть профиль Отправить личное сообщение для iLoveYou Найти все сообщения от iLoveYou
  № 10  
iLoveYou
wanted

Регистрация: Sep 2002
Сообщений: 1,737
Цитата:
Оригинал написал(а) Churinga
Я здесь спрашиваю о листенерах и их применении, потому что хочу знать, как их использовать.
ответ уже был дан. осталось только внимательно перечитать топик.
ЗЫ решение sergwizard тоже очень хорошее. если у тебя несколько типов кнопок с разными курсорами, создай для них соответствующие классы. дальше -- по описанному принципу.
__________________
вот тебе, революционный единоличник! вот тебе кулачество! вот тебе Союзкиножурнал!


Последний раз редактировалось iLoveYou; 12.12.2003 в 15:37.
Создать новую тему   Часовой пояс GMT +4, время: 18:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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