Показать сообщение отдельно
Старый 03.10.2007, 17:18
Vovtis вне форума Посмотреть профиль Отправить личное сообщение для Vovtis Найти все сообщения от Vovtis
  № 1  
Ответить с цитированием
Vovtis

Регистрация: Oct 2006
Сообщений: 26
По умолчанию Переопределение событий дочерних мувиклипов

Все мы когда то сталкивались с ситуацией когда необходимо отловить событие дочернего мувиклипа. Два дня назавд и я впервые столкнулся с такой же ситуацией. Первым делом я конешно посмотрел FAQ на этом форуме. Да, там был ответ, ссылка на клас написанный многоуважаемым silinом. Долго я изучал этот клас и понял что клас это хорошо но нужно еще и уметь его использовать, а вот это казалось совсем уже сложным для новичка в АС, коим я и являюсь. По этому для других новичков хочу немного упростить метод, что бы было понятнее.
Итак. Имееться два мувиклипа mc1 и mc2. mc2 вложенный в mc1. Задача отловить события onRollOver, onRollOut, onPress мувика mc2. Код вставляем в mc1:

Код:
var IsOver = false; //мышь над мувиклипом или нет.

this.onRollOver = function () {
	trace (this); //или другой код
};

this.mc2.onRollOver = function () {
	trace (this + " onRollOver"); //или другой код
};

this.mc2.onRollOut = function () {
	trace (this + " onRollOut"); //или другой код
};

this.mc2.onPress = function () {
	trace (this + " Pressed"); //или другой код
};

// обрабатываем onMouseMove клипа mc1 и hitTest mc2
// отвечает за события onRollOver и onRollOut
this.onMouseMove = function(){
	if (this.mc2.hitTest(_root._xmouse, _root._ymouse, true)) { 
		if (IsOver == false) {
			this.mc2.onRollOver();
			IsOver = true;
		};
	} else {
		if (IsOver == true) {
			this.mc2.onRollOut();
			IsOver = false;
		};
	};
};

// отвечает за события onPress mc2
this.onMouseUp = function () {
	if (this.mc2.hitTest(_root._xmouse, _root._ymouse, true)) {
		this.mc2.onPress();
	}
};