PDA

Просмотр полной версии : Переливание кнопок.


leopoldus
23.12.2008, 22:46
:bye:Здравствуйте, помогите вспомнить такую штуку.....


У меня есть две кнопки, я нажимаю на первую, она красиво анимирована разворачивается, так чтоб вторую было видно, я ее читаю, перехожу мышкой на вторую кнопку, кликаю, и вот самое главное, как зделать чтоб вторая кнопка также карасиово разворачивалась, а первая в это время сварачивалась???????????



Обьясните,



Зарание спасибо.

dmitriev
23.12.2008, 23:59
Можно, например, завести такую функцию, в которую можно было бы отдавать идентификатор кнопки , а она бы брала и проигрывала анимацию,
у той что активна - скрывала, на которую нажали - показывала... ну и всё...

var buttons = [about_btn, we_btn, contacts_btn]; //это массив с нышими кнопками

function btnRelease (id)
{
for (var i in buttons)
{
if(buttons[i].num==id) //num'ы раздадим кнопкам по порядку от 0 до n
{
buttons[i].show(); // show() - это выдуманная функция с анимацией появления
currentButton = buttons[i].num;
}
if(buttons[i].num==currentButton) // в currentButton храним номер активной кнопки
buttons[i].hide(); // это по аналогии с show() только наоборот =)
}
}

вешаем эту функцию на onRelease

Wolsh
24.12.2008, 00:31
Да не, самое "главное" здесь - стягивание и разбегание неактивных кнопок в ряду)))
Остальное тупо руками делается. При нажатии на кнопку та, что сейчас "открыта", переходит на кадр с анимацией сворачивания. Допустим, это сворачивание длится 15 кадров. Та, на которую нажали, переходит на кадр с которого начинается анимация разворачивания. Только первые 15 кадров этой анимации ничего не происходит - кнопка "ждет" пока свернется предыдущая. Можно поставить глобальный флаг, чтобы в самый первый раз, пока никакая кнопка не нажата, этого ожидания 15 кадров не делать а сразу переходить на кадр с действием.

silin
24.12.2008, 11:01
можно кнопки строить чохом в ентерФрейме, например, ориентируясь на текущие габариты:
//на сцене мувики b0,b1,b2,b3 c анимацией разворота
var selectedBut:MovieClip;
var butArr:Array=[b0,b1,b2,b3];
///////////////////////
function butPress(){
selectedBut = this;
//кликнутый мувик гоним по линейке впред, остальных назад
for (var i:Number = 0; i < butArr.length; i++)
{
butArr[i].onEnterFrame = butArr[i] == this ? nextFrame : prevFrame;
}
}
/////////////////////////
for(var i=0;i<butArr.length;i++){
var but:MovieClip=butArr[i];
but.id=i;
but.x0=but._x;
but.onPress=butPress;

}
///////////////////////
function onEnterFrame() {
//если не кликали, то ничего
if (!selectedBut) {
return;
}
//кликнутый гоним на исходную позицию..
selectedBut._x+=(selectedBut.x0-selectedBut._x)/5;

//строим всех, раздельно слева и справа
for (var i:Number = selectedBut.id-1; i>=0; i--) {
var but = butArr[i];
var prevBut = butArr[i+1];
but._x = prevBut._x-prevBut._width/2-but._width/2-10;
}

//справа
for (var i:Number = selectedBut.id+1; i<butArr.length; i++) {
var but = butArr[i];
var prevBut = butArr[i-1];
but._x = prevBut._x+prevBut._width/2+but._width/2+10;
}
}

leopoldus
24.12.2008, 13:13
to: silin

Спасибки огромное!!!

dimakol
25.11.2010, 15:03
Всем привет ни одного документа не нашел на сайте про северное сияние(((
Может здесь кто-то подскажет или исходник кинет как сделать свечение северного сияния?
За ранее благодарю!