![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Всвязи с предыдущей темой возник вопрос о листенерах. Кто-нибудь может объяснить поподробнее к чему их писобачивать можно и каков принцип их работы?
|
|
|||||
|
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!!! ![]() |
|
|||||
|
Цитата:
Листенер добавляется только к Key или еще к чему? А к мувику можно добавить? И вообще, в каких случаях листенер этот пользовать надо? А хелп я и сама тебе хоть весь могу процитировать, только, боюсь, не влезет. ![]() |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
листенер - этот тот-кто-слушает :)
и все. есть объекты которые говорят, а есть те которые слушают. например объект Key выдает сообщения "onKeyDown" и "onKeyUp" всем кто его слушает. если надо добавить к "слушателям" объека Key еще кого-то - делаем Key.addListener (newListener); где newListener может быть каким-угодно-объектом, лишь бы в нем были определены реакции на сообщения "onKeyDown" и "onKeyUp" (то есть newListener.onKeyDown = function () { ... } и newListener.onKeyUp= function () { ... }) вот тут в том числе про листенеры. на русском |
|
|||||
|
Ага, понятно, спасибо
![]() Ну вот к примеру есть у меня куча кнопок, наводя мышкой на которые, я хочу получить измменение одного моего курсора на лругой мой же. Я написала вот такое: //--Общая функция вызова активного курсора --
// 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 использовать? Или это максимальная оптимизация? ЫЫх, чё-то не дають покоя мене енти листенеры ![]() |
|
|||||
|
Регистрация: Sep 2001
Адрес: Moi address ne dom i ne ulica...
Сообщений: 634
|
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);
Последний раз редактировалось YuriiZelenev; 11.12.2003 в 15:35. |
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: 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);
}
Если ты используешь вместо кнопок MovieClip(ы), измени в этом коде только одно слово: "Button" на "MovieClip".
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
to sergwizard:
в моем случае используются совершенно различные кнопки в различных вложенных мувиклипах с различным местоположением и с различными курсорами onRollOver. Такое, как ты написал - это я и сама умею. Я здесь спрашиваю о листенерах и их применении, потому что хочу знать, как их использовать. ![]() |
|
|||||
|
wanted
Регистрация: Sep 2002
Сообщений: 1,737
|
Цитата:
ЗЫ решение sergwizard тоже очень хорошее. если у тебя несколько типов кнопок с разными курсорами, создай для них соответствующие классы. дальше -- по описанному принципу.
__________________
вот тебе, революционный единоличник! вот тебе кулачество! вот тебе Союзкиножурнал! Последний раз редактировалось iLoveYou; 12.12.2003 в 15:37. |
![]() |
Часовой пояс GMT +4, время: 18:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|