Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите сделать меню (http://www.flasher.ru/forum/showthread.php?t=106920)

mre 21.01.2008 22:58

Помогите сделать меню
 
Вложений: 1
В общем делаю меню следующее (файл прикрепляю).
Долго мучаюсь уже. Получается сделать красиво только если пункт выбирать мышкой сверху или снизу, а если с выбранного пункта переходить на соседний - никак не могу придумать как реализовать чтобы нормально работало, у меня уже все идеи кончились. Может у кого есть подобная 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);
                                }
                        }
        }
}


MrPoma 21.01.2008 23:17

ничего не понятно

mre 21.01.2008 23:37

Да просто глянте прикрепленный файл, может где видели подобное, мне бы хотя бы образец.

D12 21.01.2008 23:48

Пример
Только там горизонтальное меню

Aisaid 22.01.2008 15:28

тема аналогичная
ктонибудь знает алгоритм движения как в меню: http://www.netpro.ru/?action=DABlank2
понимаю как считывать контекст меню из файла, как создавать пункты, применять функции
а вот не могу понять как все эти пункты так интерактивно, с инерцией реагируют на сдвижку/увеличение размера
помогите плиз

Fernando Costa 22.01.2008 16:39

видимо на обычных Tween-ах там все.

Aisaid 22.01.2008 17:11

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

Fernando Costa 22.01.2008 18:09

в событии онМоушнЧенжед расставляешь все остальные мувики в соответствии с новыми размерами мувика на которого действует твин. Вот и все батенька

mre 22.01.2008 18:32

Да, прикольно все это, спасибо за образцы менюшек.

Aisaid 22.01.2008 19:58

Цитата:

Сообщение от Fernando Costa
в событии онМоушнЧенжед расставляешь все остальные мувики в соответствии с новыми размерами мувика на которого действует твин. Вот и все батенька

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

нужно что-то другое :umnik2:


Часовой пояс GMT +4, время: 11:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.