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

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Цитата:
1) Св-во Mouse.inner мы обьявляем сами ?
2) Mouse.watch - этого метода я нигде не встречал.
3) Что делает метод addProperty, тоже не знаю о нем ничего

Открой этот исходник (я убрал все лишнее), и на его примере я попробую дать ответы на твои вопросы. Сразу предупреждаю: объясняльщик из меня хреновый, поэтому буду объяснять просто и незатейливо, - своими словами. Так что, если в чем-то ошибусь, пусть меня поправят.


Код:
state_btn.useHandCursor = false;
Создаем неопределенный объект (в прошлом исходнике я использовал для этого объект "Mouse").
obj={};
Пишем методы, которые позднее будут наследовать все объекты класса "Button"
Код:
Button.prototype.privateOnRollOut = function(){
	obj.inner = false;
}
Button.prototype.privateOnRollOver = function(){
	obj.inner = true;
}
Добавляем классу "Button" новые проперти: "onRollOut" и "onRollOver" . Чё говорите? У кнопок уже есть такие проперти? Ну и что, а я хочу добавить еще свои личные… И теперь, при событиях onRollOver и onRollOut, кнопки будут вызывать функции "privateOnRollOut" и " privateOnRollOver ", при этом меняя свойства "inner" у объекта "obj".
Код:
Button.prototype.addProperty("onRollOut",
	function(){
	  	this.privateOnRollOut();
	}, null
)

Button.prototype.addProperty("onRollOver",
	function(){
	  	this.privateOnRollOver();
	}, null
)
Заставляем объект "obj" следить за изменением значения "inner", и при изменении этого значения вызывать соответствующие функции (менять текс в текстовом поле и менять значение некоторой переменной "k").
Код:
obj.watch("inner",
	function(){
		txt = arguments[2] ? "inside" : "outside";
		k = arguments[2] ? true : false;
	}
)
Теперь, чтобы не пропадали зря вновь приобретенные свойства кнопок, используем их для вызова любых функций, которые нам нужны. Я, для примера нарисовал такую:
Код:
MovieClip.prototype.rotIt = function(){
	col = new Color(this);
	this.onEnterFrame = function(){
		if(click){
		k ? this._rotation+=5 : this._rotation-=5;
		k ? col.setRGB(0xFF0000) : col.setRGB(0x0000FF);
	}
	}
}
mc.rotIt();
b1_btn.onRelease = function(){
	click = (click+1)%2;
}
Вот, вроде, и все.

ЗЫ. В предыдущем исходнике я инкрементировал не высоты кнопок, а изменял их положение по _y. Это я сделал, чтобы показать, что кнопки не мешают друг другу, и RollOver на вышележащую кнопку, не мешают нижележащей отслеживать это же событие.
Вложения
Тип файла: zip mouseinside1.zip (3.9 Кб, 347 просмотров)
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)


Последний раз редактировалось sergwizard; 20.05.2004 в 22:36.