![]() |
|
||||||||||
|
|||||
|
[+6 15.11.12]
Регистрация: Oct 2012
Сообщений: 63
|
Добрый вечер. Как сделать выпадающий список?Подскажите сам алгоритм с кодом разберусь. К примеру есть кнопка это да, мы к ней подключаем слушателя мышки, на клик у нас должен ПЛАВНО вываливаться вниз скажем под кнопкой черный квадрат, высота квадрата зависит от того сколько на нем будет написанно текста. И скажем по нажатию еще раз этой кнопки мы проделывем обратный алгоритм, квадрат заезжает обратно под кнопку.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
При нажатии проверяете флаг (раскрыто/нераскрыто) и меняете значение переменной, хранящей целевую координату у (то есть тот у, к которому должен приползти квадрат в конце). Подписываетесь на ентерфрейм. В обработчике прибавляете к текущему у квадрата какую-то величину (шаг), скажем для начала 5 пикселей (потом можно сделать динамический расчет шага). И проверяете, не слишком ли далеко уже уполз квадрат. Если уполз - назначаете его у целевую координату и отписываетесь от ентерфрейм. Меняете флаг состояния раскрытости на противоположный.
__________________
Reality.getBounds(this); |
|
|||||
|
Вот пользуйтесь делал выпадающее плавно меню, при наведении на кнопку выпадает список. Работает на маске:
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, время: 11:18. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|