![]() |
|
||||||||||
|
|||||
|
К примеру, есть два класса:
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,787
|
MrPoma, статические константы с названиями событий пишутся не так и не в классе, который их посылает, а в наследнике Event.
|
|
|||||
|
так что ли??
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Такой ивент вообще не нужен, потому как уже есть такая константа у 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, время: 02:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|