Показать сообщение отдельно
Старый 02.10.2006, 22:50
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 26  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 sem1313:
Я покажу обработку "роллов" на мувиклипы, которые находятся внутри одного большого мувиклипа, имеющего onRollOut...

2 Kookla:
Сперва создаём в библиотеке мувиклипы кнопки и кнопок-выпадаек. Внутри обоих этих мувиклипов создаём мувиклип label, в котором содержится текстовое поле с именем caption. Это текстовое поле будет отвечать за подписи на кнопках. Можно было не вкладывать текстовое поле в мувиклип label, но я это делаю для гибкости на случай, если в будущем вам захочется сделать не просто изменение цвета надписи на кнопках, но и более сложные эффекты.
Итак, отталкиваясь от моего прошлого примера, который вы видели, пишем скрипт в первом кадре сцены:
Код:
var buttonHeight:Number = 24;
var buttonCaption:String = "НАВОДИТЬ СЮДА"
var buttonX:Number = 100;
var buttonY:Number = 100;

var dropDowns:Array = new Array();
dropDowns.push("ПУНКТ 1");
dropDowns.push("ПУНКТ 2");
dropDowns.push("ПУНКТ 3");
var dropDownHeight:Number = 24;

var dropDownTextColor:Number = 0x000000;
var dropDownHoverTextColor:Number = 0xFF0000;

this.attachMovie("button", "button", this.getNextHighestDepth(), {_x:buttonX, _y:buttonY});
this.button.label.caption.text = buttonCaption;
setColor(this.button.label, dropDownTextColor);

function setColor(MC:MovieClip, colorToSet:Number)
{
	var newColor:Color = new Color(MC);
	newColor.setRGB(colorToSet);	
}

this.button.onRollOver = function()
{
	setColor(this.label, dropDownHoverTextColor);
	var dropDownsLength:Number = dropDowns.length;
	for (var index:Number = 0; index < dropDownsLength; index++)
	{
		var newDropDownName:String = "dropDown" + index;
		var dropDownClip:MovieClip = this.attachMovie("dropDown", newDropDownName, this.getNextHighestDepth(), {_x:0, _y:buttonHeight + index * dropDownHeight});
		setColor(dropDownClip.label, dropDownTextColor);
		dropDownClip.label.caption.text = dropDowns[index];
		dropDownClip.id = index;
	}
}

this.button.onRollOut = this.button.onReleaseOutside = function()
{
	setColor(this.label, dropDownTextColor);
	var dropDownsLength:Number = dropDowns.length;
	for (var index:Number = 0; index < dropDownsLength; index++)
	{
		var dropDownName:String = "dropDown" + index;
		this[dropDownName].removeMovieClip();
	}
}

this.button.onMouseMove = function()
{
	var dropDownsLength:Number = dropDowns.length;
	for (var index:Number = 0; index < dropDownsLength; index++)
	{
		var dropDownName:String = "dropDown" + index;
		var dropDownTextNewColor:Number;
		if (this[dropDownName].hitTest(this._parent._xmouse, this._parent._ymouse, true))
		{
			dropDownTextNewColor = dropDownHoverTextColor;
		}
		else
		{
			dropDownTextNewColor = dropDownTextColor;
		}
		setColor(this[dropDownName].label, dropDownTextNewColor);
	}
}

this.button.onPress = function()
{
	var dropDownsLength:Number = dropDowns.length;
	for (var index:Number = 0; index < dropDownsLength; index++)
	{
		var dropDownName:String = "dropDown" + index;	
		if (this[dropDownName].hitTest(this._parent._xmouse, this._parent._ymouse, true))
		{
			trace("Pressed: " + dropDowns[this.id]);
		}
	}
}
Функция setColor определена для удобства.
Исходник прикрепляю.
Будут вопросы, спрашивайте...
Вложения
Тип файла: zip SimpleDropDownMenuMultiline.zip (6.8 Кб, 76 просмотров)
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 02.10.2006 в 23:04.