|
|
|||||
Классы и события.
К примеру, есть два класса:
package { var vT:T_2 = new T_2(); // содержит экземпляр второго класса public class T_1 extends MovieClip { function T_1() {} } } package { public class T_2 extends MovieClip { function T_2() { Movic.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownMovic); } //-------------------------------------------- // событие происходит если нажали на мувик //-------------------------------------------- public function onMouseDownMovic(event:Event):void { trace("onMouseDownMovic"); } } } Как узнать когда в T_2 событие произошло? Как вариант можно поставить булевскую переменную в T_2 и постоянно проверять в T_1 - addEventListener(Event.ENTER_FRAME, Update); произошло ли событие или нет. Но это како-то слишком прямолинейный метод, мягко говоря. Какие ещё есть варианты? |
|
|||||
ветеран форума
|
создавать свои события с помощью dispatchEvent и подписывать на них того, кому надо знать
__________________
4am is time to rock |
|
|||||
А можно маленький примерчик - для быстрого усвоения, как это будет выглядеть с этими двумя классами и событием.
|
|
|||||
package{ import flash.display.*; import flash.events.Event; dynamic public class EventExample extends Sprite{ public function EventExample():void{ var unit:Unit = new Unit(); unit.addEventListener(Unit.MOUSE_DOWN, mouse_down_handler) addChild(unit); } private function mouse_down_handler(e:Event):void{ trace('event example: mouse down') } } } package{ import flash.display.*; import flash.events.*; dynamic public class Unit extends Sprite{ public static var MOUSE_DOWN:String = 'on_mouse_down'; public function Unit():void{ addEventListener(MouseEvent.MOUSE_DOWN, mouse_down_handler); } private function mouse_down_handler(e:Event):void{ trace('unit: mouse down') dispatchEvent(new Event(MOUSE_DOWN)); } } } |
|
|||||
А если EventExample - не содержит экземпляра класса: Unit, можно ли тогда переловить событие?
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
MrPoma, статические константы с названиями событий пишутся не так и не в классе, который их посылает, а в наследнике Event.
|
|
|||||
так что ли??
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Такой ивент вообще не нужен, потому как уже есть такая константа у MouseEvent. И т.к. событие всплывающее, то посылать его второй раз нет смысла.
Значение константы должно быть mouseDown. |
|
|||||
Понятно. Спасибо. Всё получилось.
|
|
|||||
я вот тут подумал - от этого dispatchEvent(new Event(MOUSE_DOWN)); - очень мало толку!
Мы объявляем событие в одном классе, а затем это же событие в другом, когда мы можем сделать так: // Muvic - это мувик над котрым нажимают EventExample.unit.Muvic.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); public function onMouseDownAddNewUser(event:Event):void { trace("onMouseDown"); } Плюс метода, на который указал DarkLight и списав с хелпа предоставил MrPoma в том, что он поддреживает инкапсуляцию данных. |
Часовой пояс GMT +4, время: 21:26. |
|
« Предыдущая тема | Следующая тема » |
|
|