Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выпадающий ПЛАВНО список (http://www.flasher.ru/forum/showthread.php?t=187879)

Nickolai 25.11.2012 20:33

Выпадающий ПЛАВНО список
 
Добрый вечер. Как сделать выпадающий список?Подскажите сам алгоритм с кодом разберусь. К примеру есть кнопка это да, мы к ней подключаем слушателя мышки, на клик у нас должен ПЛАВНО вываливаться вниз скажем под кнопкой черный квадрат, высота квадрата зависит от того сколько на нем будет написанно текста. И скажем по нажатию еще раз этой кнопки мы проделывем обратный алгоритм, квадрат заезжает обратно под кнопку.

Wolsh 25.11.2012 21:05

При нажатии проверяете флаг (раскрыто/нераскрыто) и меняете значение переменной, хранящей целевую координату у (то есть тот у, к которому должен приползти квадрат в конце). Подписываетесь на ентерфрейм. В обработчике прибавляете к текущему у квадрата какую-то величину (шаг), скажем для начала 5 пикселей (потом можно сделать динамический расчет шага). И проверяете, не слишком ли далеко уже уполз квадрат. Если уполз - назначаете его у целевую координату и отписываетесь от ентерфрейм. Меняете флаг состояния раскрытости на противоположный.

PainKiller 26.11.2012 12:49

Вот пользуйтесь делал выпадающее плавно меню, при наведении на кнопку выпадает список. Работает на маске:
Код AS3:

package core.view.vo.ui.dropmenu
{
        import core.view.TopMenuMediator;
        import flash.display.Bitmap;
        import flash.display.SimpleButton;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import com.greensock.TweenLite;
 
        import com.junkbyte.console.Cc;
 
        /**
        * ...
        * @author PainKiller
        */

 
 
        public class  DropMenuItem extends Sprite
        {
                var btn:SimpleButton;
                var data:Object;
                var drop:Sprite;
                var _mask:Sprite;
 
                public function DropMenuItem (btn:SimpleButton, data:Object)
                {
                        this.btn = btn;
                        addChild (btn);
                        this.data = data;
                        createDrop ();
                        createMask ();
                        addEventListener (MouseEvent.MOUSE_OVER, onOver);
                        addEventListener (MouseEvent.MOUSE_OUT, onOut);
                        drop.x = (btn.width - drop.width) / 2;
                }
 
                private function createDrop ():void
                {
                    drop = new Sprite ();
                        var top:Top = new Top (); // это картинка
                        drop.addChild (top);
                        var y_pos:Number = top.height;
                        for each (var obj in data.cat)
                        {
                                if (obj != undefined)
                                {
                                        var punkt:DropMenuPunkt = new DropMenuPunkt (obj.name, obj.tpl); // это класс пункта меню, в нем прописано реагирование на клик и наведение мыши
                                        punkt.y = y_pos;
                                        y_pos += punkt.height;
                                        drop.addChild (punkt);
                                }
                        }
                        var bottom:Bottom = new Bottom (); //картинка
                        bottom.y = y_pos;
                        drop.addChild (bottom);
                        drop.y = 70; //50
                        addChild (drop);
                        drop.visible = false;
                }
 
                private function createMask ():void
                {
                        _mask = new Sprite ();
                        _mask.graphics.beginFill (0x00FF00);
                        _mask.graphics.drawRect (0, 0, drop.width, 1);
                        _mask.graphics.endFill ();
                        drop.addChild (_mask);
                        drop.mask = _mask;
                }
 
                private function onOver (e:MouseEvent):void
                {
                        drop.visible = true;
                        TweenLite.to (_mask, 1.7, { height: drop.height } );
                }
 
                private function onOut (e:MouseEvent):void
                {
                        TweenLite.to (_mask, 1.7, { height: 1, onComplete: fadeOut } );
                }
 
                private function fadeOut ():void
                {
                        drop.visible = false;
                }
 
 
        }
 
}



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

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