Mac OS самая OS из всех осей. Замутим у нее менюшку и сделаем ее на флеше.

Tween от Adobe самое то.

Что бы испольовать fl.transitions.* во FlashDevelop понадобится выполнить некоторые телодвижения мышкой по столу, это легко. Нажимаем во FlashDevelop Tools - > Global Classpaths (теперь надо нажать на кнопочку) [Add Classpaths...] Ну дальше догадайтесь. Я догадался.
D:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes
Все... Теперь во FlashDevelop будет работать Tween из пакета fl.transitions.* Естественно подойдет и CS4. "Айй яяяяй"- скажут злые посетители моего туториала - "у нас нету Adobe Flash CS3 и нету Adobe Flash CS4!!!" Ох, ребятки, мне вас не жаль. Да пойдите к кому нибуть в гости к флешерам у которых есть она - скопируйте эту папку и юзайте на здоровье. Или... Можно Tween засунуть в swc библиотеку как например я засовывал, да хоть слайдер. Slider из Adobe Flash CS3 в swc.
ФЛЕШКА

Понадобятся картинки. Мой мега самодукументированный код комментировать я не могу ибо считаю, что и так должно быть все понятно. Однако, так сказать вводная часть. Tween это такая штучка, которая делает анимацию. Его можно запустить остановить и все такое... От какие вы, все вам расскажи да покажи... Ребята, не тупите - запускается методом start, останавливается (ой ржу не магу) stop. Так-же ему можно назначить стартовую позицию begin и конечную finish. Ну естественно, что-бы его использовать нужно датьему какой нибуть объект и указать какое свойство у объекта будет менятся. Мне нравится делать так
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import fl.transitions.*;
	import fl.transitions.easing.*;
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class DocTweenMacOs extends MovieClip
	{
		private var o:Object, tween:Tween, max:int, min:int;
		public function DocTweenMacOs() 
		{
			max = -100;
			min = 100;
			o = new Object;
			tween = new Tween(o, "i", None.easeNone, min, max, 0.3, true);
			tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenMotionChange);
		}
		private function tweenMotionChange(evt:TweenEvent):void {
			trace(o.i);
		}
	}
	
}
В outpute мы видим
55.99999999999999
41.333333333333336
37.33333333333333
34
12.666666666666657
-10.666666666666686
-32.666666666666686
-56.00000000000003
-76.66666666666669
-100
-100
У блин... это ж то что нам надо для создания Mac OS меню...
Не знаю как вам, а мне этого предостаточно. В общем когда на элемент меню наводится мышка срабатывает событие MOUSE_OVER это событие запукает tween.start, когда мышка сходит с объекта запускается событие MOUSE_OUT оно делает tween.stop и ставит ему новые begin и end и тут-же его и запускает, получается, что он идет наоборот и объект уменьшается. Тут случился конфуз, когда понадобилось над иконкой нарисовать текст, получается текст тоже принимал мышкино событие, и Меню дергалось когда мышка оказывалась в пространстве между текстом иконки и собственно картинкой иконки, поэтому пришлось сделать разделение иконки и текста, при наведении на текст Mac OS не дергается. Можно было бы и проще, но еще есть тень. _gen:Sprite - это то, что нужно увеличивать, а _tag:Sprite это, то что есть на _gen:Sprite при наведении на которой нужно дергать меню (это картинка). Конечно, не good, но документ класс имеет метод, который строит картинки doc.setPicPlace(id);, тк. Увеличивающийся пункт меню, раздвигает своих соседей.
Вспомогательный класс BigSmall
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import fl.transitions.*;
	import fl.transitions.easing.*;
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class BigSmall 
	{
		private var doc:DocTweenMacOs,
			tween:Tween,
			scale:Number,
			anim_trig:Boolean,
			current:Number,
			max:Number,
			min:Number,
			gen:Sprite,
			id:int,
			o:Object;
		public function BigSmall(_doc:DocTweenMacOs, _gen:Sprite, _id:int, _tag:Sprite) 
		{
			doc = _doc;
			id = _id;
			gen = _gen;
			max = 1;
			min = 0.7;
			o = new Object;
			gen.scaleX = gen.scaleY = min;
			_tag.addEventListener(MouseEvent.MOUSE_OVER, over_func);
			_tag.addEventListener(MouseEvent.MOUSE_OUT, doc_out_func);
			gen.useHandCursor = true;
			gen.buttonMode = true;
			tween = new Tween(o, "i", None.easeNone, min, max, 0.3, true);
			current = min;
			tween.stop();
			tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenMotionChange);
		}

		private function over_func(evt:MouseEvent):void {
			//trace("over");
			tween.stop();
			tween.begin = current;
			tween.finish = max;
			//trace("over_func");
			tween.start();
			//doc.setPicPlace();
			doc.addChild(gen);
		}

		private function doc_out_func(evt:MouseEvent):void {
			tween.stop();
			tween.begin = current;
			tween.finish = min;
			//trace("doc_out_func");
			tween.start();
			//trace(id+" "+current);
		}

		private function tweenMotionChange(evt:TweenEvent):void {
			current = o.i;
			gen.scaleX = gen.scaleY = o.i;
			doc.setPicPlace(id);
		}

		
	}
	
}
И документ класс, тут я сделал тормозилку, используя событие enterFrame, так менюшка дергается плавнее, можете ее выкинуть, попробовать без нее.
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.external.*;
	import flash.filters.*;
	import flash.text.*;
	/**
	 * ...
	 * @author http://www.murmadillo.tut.su/
	 */
	public class DocTweenMacOs extends MovieClip
	{
		[Embed(source = 'pic/image1.jpg')] private var Pic0:Class;
		[Embed(source = 'pic/image2.jpg')] private var Pic1:Class;
		[Embed(source = 'pic/image3.jpg')] private var Pic2:Class;
		[Embed(source = 'pic/image4.jpg')] private var Pic3:Class;
		[Embed(source = 'pic/shape.swf')] private var Pic4:Class;
		
		private var filtr:DropShadowFilter,
		callJavaScript:uint,
		picArr:Array,
		yP:int,
		xP:int,
		yArr:Array,
		hSize:Array,
		sp:Sprite,
		nCurr:int,
		tSp:Sprite,
		nTag:Number,
		nBrake:Number,
		nCorr:Number,
		nameArr:Array,
		bmd:BitmapData,
		pic:Class,
		txt:TextField,
		urlStr:String;
		
		public function DocTweenMacOs() 
		{
			var i:int;
			//for (i = 0; i < 4; i++) cl["pic" + i] = this['Pic' + i] as Class;
			addChild(new Pic4);
			nameArr = ['3D МОДЕЛИ', 'ИНТЕРЬЕРЫ', 'РИСУНКИ', 'ЭКСТЕРЬЕРЫ'];
			picArr = [];
			xP = 100;
			yP = 80;
			yArr = [];
			hSize = [];
			urlStr = "http://www.arch-art.tut.su/";
			for (i = 0; i < 4; i++) {
				addChild(picArr[i] = new Sprite);
				picArr[i].addChild(sp = new Sprite);
				pic = this["Pic" + i];
				bmd = new pic().bitmapData;
				sp.addChild(tSp = new Sprite);
				tSp.graphics.beginBitmapFill(bmd,null,false,true);//залить рисунком
				tSp.graphics.drawRect(0, 0, bmd.width, bmd.height);
				tSp.y = 20;
				sp.addChild(txt = new TextField);
				txt.autoSize = TextFieldAutoSize.LEFT;
				txt.htmlText ="<font size='16'>"+nameArr[i];
				txt.selectable = false;
				
				sp.x = - sp.width/2;
				sp.y = - sp.height/2;
				
				
				//picArr[i].scaleX = picArr[i].scaleY = 0.5;
				picArr[i].x = xP;
				filtr = new DropShadowFilter();
				filtr.distance = 10;
				filtr.alpha = 0.8;
				filtr.strength = 0.8;
				//tSp.filters = [new BlurFilter(1.5, 1.5, BitmapFilterQuality.HIGH)];
				picArr[i].filters = [filtr];
				new BigSmall(this, picArr[i], i, tSp);
				tSp.name = nameArr[i];
				picArr[i].addEventListener(MouseEvent.CLICK, btnClick);
			}
			picArr[0].y = yP;
			for (i=1;i<4;i++) picArr[i].y = 10+
				picArr[i-1].y+picArr[i-1].height*0.5 +picArr[i].height*0.5;
			for (i = 0; i < 4; i++) yArr[i] = picArr[i].y;
			addEventListener(Event.ENTER_FRAME, enterF);
			nBrake = nCorr = 0;
			nTag = 777;
		}

		private function enterF(evt:Event):void{
			if (nTag!=777) {
				if (nCorr<=nTag) nCorr+=3;
				if (nCorr>=nTag) nCorr-=3;
				setPicPlace(nCurr);
			}
		}

		public function setPicPlace(_n:int = 3):void{
			var i:int;
			var j:int;
			var n:int = nCurr = _n;
			
			//trace(n);
			
			picArr[0].y = yP;
			for (i=1;i<4;i++) picArr[i].y = 10+
				picArr[i-1].y+picArr[i-1].height*0.5 +picArr[i].height*0.5;
			
			nTag = picArr[n].y - yArr[n];

			for (i=0;i<4;i++) picArr[i].y = picArr[i].y - nCorr;
		}

		public function btnClick(evt:MouseEvent):void {
			trace(evt.target.name);
			//nameArr = ['3D МОДЕЛИ', 'ИНТЕРЬЕРЫ', 'РИСУНКИ', 'ЭКСТЕРЬЕРЫ'];
			try{
				if (evt.target.name == "ЭКСТЕРЬЕРЫ") {
					trace("sal");
					callJavaScript = ExternalInterface.call("jsGetVertical", urlStr + "portfolio/salon.html");
				}
				if (evt.target.name == "3D МОДЕЛИ") {
					trace("car");
					callJavaScript = ExternalInterface.call("jsGetVertical", urlStr + "portfolio/object.html");
				}
				if (evt.target.name == "ИНТЕРЬЕРЫ") {
					trace("cit");
					callJavaScript = ExternalInterface.call("jsGetVertical", urlStr + "portfolio/room.html");
				}
				if (evt.target.name == "РИСУНКИ") {
					trace("pic");
					callJavaScript = ExternalInterface.call("jsGetVertical", urlStr + "portfolio/art.html");
				}
			}catch (e:Error) {
				trace(e);
			}
		}
	}
	
}
Зачем, эта морока с javascript??? Это такой обход новой системы безопасности 10 Flash плеера, теперь если ссылаться на посторонний сайт, а посторонние будут это http://www.arch-art.tut.su и http://arch-art.tut.su те. будет ошибка нарушение изолированной среды, через ява скрипт идет нормально.
javaScript
function jsGetVertical(_str){
//alert("hellO");
window.location.href=_str;
}
Архив, содержит проект Mac OS меню для FlashDevelop.