Форум 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=76291)

australian incognito 02.03.2006 16:01

Хитрый слайдер для меню. Как?
 
Суть в том, что есть 4 пункта меню, занесенных в массив items и слайдер vbn_mc. Слайдер должен в пределах меню при наведении на любой из его пунктов бегать за мышью с замедлением (что мне удалось реализовать), но при уводе мыши с меню у меня слайдер резко останавливается там, где была его последняя координата (delete vbn_mc.onEnterFrame). Меня такой расклад не совсем устраивает и хотелось бы, чтобы при уводе мыши с любого из пунктов меню, слайдер опять же с замедлением останавливался по центру соответствующего пункта.

Код:

var items = [company_btn, portfolio_btn, assoc_btn, contact_btn];
var leftLim = 20+vbn_mc._width/2;
var rightLim = 580-vbn_mc._width/2;
for (var i = items.length; i--; ) {
        var item = items[i];
        item.onRollOver = function() {
                vbn_mc.onEnterFrame = function() {
                        var x = _xmouse;
                        if (x<leftLim) {
                                x = leftLim;
                        }
                        if (x>rightLim) {
                                x = rightLim;
                        }
                        this._x += Math.round((x-this._x)/10);
                };
        };
        item.onRollOut = item.onDragOut=function () {
                for (var i = items.length; i--; ) {
                        if (items[i].hitTest(x, _ymouse, true)) {
                                break;
                        }
                }
                if (i>=0) {
                        return;
                }
                delete vbn_mc.onEnterFrame;
        };
}


australian incognito 05.03.2006 20:24

!!!
 
Неужели никто не подскажет?

Gaen 05.03.2006 23:32

Не знаю точной иерархии, поэтому тебе придётся подправить пути к мувикам...
Код:


var items = [company_btn, portfolio_btn, assoc_btn, contact_btn];
var leftLim = 20+vbn_mc._width/2;
var rightLim = 580-vbn_mc._width/2;

for(var i in items){//для каждого пункта
    var item=items[i];
    item.onRollOver=function(){
        vbn_mc.onEnterFrame=function(){
            var xm = _xmouse;
            if (xm<leftLim) {
                xm = leftLim;
            }else if (x>rightLim) {
                x = rightLim;
            }//if
            this._x += Math.round((x-this._x)/10);
            var dist=this._x-xm;
            if(dist>-0.5||dist<0.5)delete this.onEnterFrame;  //ключевая строка :)
        }//onEnterFrame
    }//onRollOver
}//for

Да. Наверно так.

australian incognito 06.03.2006 05:04

Спасибо за ответ. Сегодня же обязательно проверю.


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

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