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

Код 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;
}
}
}