![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
В общем делаю меню следующее (файл прикрепляю).
Долго мучаюсь уже. Получается сделать красиво только если пункт выбирать мышкой сверху или снизу, а если с выбранного пункта переходить на соседний - никак не могу придумать как реализовать чтобы нормально работало, у меня уже все идеи кончились. Может у кого есть подобная swf чтобы код глянуть или кто-нить сталкивался с таким и может подсказать алгоритм, swf прикрепляю, при необходимости могу выложить fla. Заранее спасибо! Очень нужно, помогите плиз! Весь код ниже: stop();
var count = 17;
var block = false;
var diff = 158;
var koef = Math.ceil(diff / count);
var speed = 1;
var base_width = 214;
var mask_base_x = 158;
function update_params(clip, body_width, clip_id, selected_id)
{
clip.interval2 = setInterval (function(clip, body_width, clip_id, selected_id)
{
speed2 = _root.speed;
if ((body_width >= clip.body._width - (speed2 - 1)) && (body_width <= clip.body._width + (speed2 - 1)))
{
clip.body._width = body_width;
clip.body2._width = body_width;
if (body_width == _root.base_width)
clearInterval(clip.interval2);
}
else
if (body_width > clip.body._width)
{
clip.body._width = clip.body._width + speed2;
clip.body2._width = clip.body2._width + speed2;
if (clip_id > selected_id)
{
_root["a"+selected_id].body._x = _root["a"+selected_id].body._x - speed2;
_root["a"+selected_id].body2._x = _root["a"+selected_id].body2._x - speed2;
}
else
{
_root["a"+selected_id].mask._x = _root["a"+selected_id].mask._x + speed2;
}
if (clip_id > selected_id)
{
for (i = selected_id + 1; i <= clip_id; i++)
{
_root["a"+i].body._x = _root["a"+i].body._x - speed2;
_root["a"+i].body2._x = _root["a"+i].body2._x - speed2;
_root["a"+i].mask._x = _root["a"+i].mask._x - speed2;
}
}
else
{
for (i = clip_id + 1; i < selected_id; i++)
{
_root["a"+i].body._x = _root["a"+i].body._x + speed2;
_root["a"+i].body2._x = _root["a"+i].body2._x + speed2;
_root["a"+i].mask._x = _root["a"+i].mask._x + speed2;
}
}
}
else
{
clip.body._width = clip.body._width - speed2;
clip.body2._width = clip.body2._width - speed2;
if (clip_id > selected_id)
{
_root["a"+selected_id].body._x = _root["a"+selected_id].body._x + speed2;
_root["a"+selected_id].body2._x = _root["a"+selected_id].body2._x + speed2;
}
else
{
_root["a"+selected_id].mask._x = _root["a"+selected_id].mask._x - speed2;
}
if (clip_id > selected_id)
{
for (i = (selected_id + 1); i <= clip_id; i++)
{
_root["a"+i].body._x = _root["a"+i].body._x + speed2;
_root["a"+i].body2._x = _root["a"+i].body2._x + speed2;
_root["a"+i].mask._x = _root["a"+i].mask._x + speed2;
}
}
else
{
for (i = clip_id + 1; i < selected_id; i++)
{
_root["a"+i].body._x = _root["a"+i].body._x - speed2;
_root["a"+i].body2._x = _root["a"+i].body2._x - speed2;
_root["a"+i].mask._x = _root["a"+i].mask._x - speed2;
}
}
}
}, 20, clip, body_width, clip_id, selected_id);
}
count = 17;
elems = [];
e_width = 56;
e_interval = 2;
for (var k = 1; k <= _root.count; k++)
{
_root['a'+k].onRollOver = function()
{
item = Number(this._name.substr(1,this._name.length-1));
for (i = 1; i <= _root.count; i++)
{
clearInterval(_root["a"+i].interval2);
if (i != item)
update_params(_root["a"+i],_root.base_width - _root.koef + 1,i,item);
}
}
_root['a'+k].onRollOut = function()
{
item = Number(this._name.substr(1,this._name.length-1));
for (i = 1; i <= _root.count; i++)
{
clearInterval(_root["a"+i].interval2);
if (i != item)
{
update_params(_root["a"+i],_root.base_width,i,item);
}
}
}
}
Последний раз редактировалось mre; 21.01.2008 в 23:39. |
|
|||||
|
ничего не понятно
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Да просто глянте прикрепленный файл, может где видели подобное, мне бы хотя бы образец.
|
|
|||||
|
[+3 19.07.07]
|
тема аналогичная
ктонибудь знает алгоритм движения как в меню: http://www.netpro.ru/?action=DABlank2 понимаю как считывать контекст меню из файла, как создавать пункты, применять функции а вот не могу понять как все эти пункты так интерактивно, с инерцией реагируют на сдвижку/увеличение размера помогите плиз
__________________
Самый великий программер - БОГ! |
|
|||||
|
[+3 19.07.07]
|
Fernando Costa, я тоже мог бы так предположить
а поконструктивней ничего нет? как именно могут эти твины между собой взаимодействовать?
__________________
Самый великий программер - БОГ! |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Да, прикольно все это, спасибо за образцы менюшек.
|
|
|||||
|
[+3 19.07.07]
|
Цитата:
это нужно массив с координатами пересчитывать до тех пор пока последняя из строк не станет на своё место... тормоза будут нереальные, и к тому же как ты будешь определять, по очереди? стали ли все ячейки на своё место... нужно что-то другое ![]()
__________________
Самый великий программер - БОГ! |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|