Бла-бла-бла, напиши работающий пример, тогда я поверю.
вот кусок моего старого кода, работает идеально.

Код:
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Creating startmenu
_root.OSstartmenu.onMouseDown=function(){
if(_root._xmouse>0 and _root._xmouse<Number(_root.OSvariables.StartButtonWidth) and _root._ymouse<600 and _root._ymouse>600-Number(_root.OSvariables.TaskbarHeight)){
_root.OSvariables.StartMenuShow=true
for(t in _root.OSstartmenu){_root.OSstartmenu[t].removeMovieClip(), _root.OSstartmenu.clear()}
}
}
_root.OSstartmenu.onEnterFrame=function(){
if((Boolean(_root.OSvariables.StartMenuShow)==true)){
_root.OSvariables.StartMenuShow=false
_root.OSstartmenu.beginFill(Number(_root.OSvariables.StartMenuColour),Number(_root.OSvariables.StartMenuColourAlpha));
_root.OSstartmenu.lineStyle(Number(_root.OSvariables.StartMenuLineThickness),Number(_root.OSvariables.StartMenuLineColour),Number(_root.OSvariables.StartMenuLineColourAlpha));
_root.OSstartmenu.lineTo(Number(_root.OSvariables.StartMenuCellWidth),0);
_root.OSstartmenu.lineTo(Number(_root.OSvariables.StartMenuCellWidth),_root.OSvariables.StartMenuItemsNumber*Number(_root.OSvariables.StartMenuCellHeight));
_root.OSstartmenu.lineTo(0,_root.OSvariables.StartMenuItemsNumber*Number(_root.OSvariables.StartMenuCellHeight));
_root.OSstartmenu.lineTo(0,0);
_root.OSstartmenu.endFill();
for(i=1;i<=_root.OSvariables.StartMenuItemsNumber;i++){
_root.OSstartmenu.createEmptyMovieClip("item"+i,i)
//Drawing Spliting line
_root.OSstartmenu["item"+i].lineStyle(Number(_root.OSvariables.StartMenuLineThickness),Number(_root.OSvariables.StartMenuLineColour),Number(_root.OSvariables.StartMenuLineColourAlpha));
_root.OSstartmenu["item"+i].moveTo(0,Number(_root.OSvariables.StartMenuCellHeight))
_root.OSstartmenu["item"+i].lineTo(Number(_root.OSvariables.StartMenuCellWidth),Number(_root.OSvariables.StartMenuCellHeight))
//Text field creating
_root.OSstartmenu["item"+i].StartButtonTextFormat = new TextFormat();
_root.OSstartmenu["item"+i].StartButtonTextFormat.font = _root.OSvariables.StartMenuItemTextFont;
_root.OSstartmenu["item"+i].StartButtonTextFormat.size = Number(_root.OSvariables.StartMenuCellHeight)*0.5;
_root.OSstartmenu["item"+i].StartButtonTextFormat.bold = Boolean(_root.OSvariables.StartMenuItemTextBold)
_root.OSstartmenu["item"+i].StartButtonTextFormat.italic = Boolean(_root.OSvariables.StartMenuItemTextItalic)
_root.OSstartmenu["item"+i].createTextField("startbuttontext",1,Number(_root.OSvariables.StartMenuCellHeight),0,Number(_root.OSvariables.StartMenuCellWidth)-Number(_root.OSvariables.StartMenuCellHeight),Number(_root.OSvariables.StartMenuCellHeight));
_root.OSstartmenu["item"+i].startbuttontext.type = "dynamic";
_root.OSstartmenu["item"+i].startbuttontext.selectable = false
_root.OSstartmenu["item"+i].startbuttontext.textColor = Number(_root.OSvariables.StartMenuItemTextColour);
_root.OSstartmenu["item"+i].startbuttontext.autoSize = true;
_root.OSstartmenu["item"+i].startbuttontext.setNewTextFormat(_root.OSstartmenu["item"+i].StartButtonTextFormat);
_root.OSstartmenu["item"+i].startbuttontext.text = _root.OSvariables["StartMenuItem"+i+"Name"]
_root.OSstartmenu["item"+i]._y=(i-1)*Number(_root.OSvariables.StartMenuCellHeight)
//Adding Icon
_root.OSstartmenu["item"+i].icon=_root.OSstartmenu["item"+i].createEmptyMovieClip("icon",2);
if(_root.OSvariables["StartMenuItem"+i+"IconURL"]!=undefined){_root.OSstartmenu["item"+i].icon.loadMovie(_root.OSvariables["StartMenuItem"+i+"IconURL"])}
else{_root.OSstartmenu["item"+i].icon.loadMovie(_root.OSvariables.DefaultIconURL)}
_root.OSstartmenu["item"+i].onEnterFrame=function(){
if(this.icon.getBytesLoaded()>=this.icon.getBytesTotal()){
this.IconLoadClip.clear();
this.icon._y=Number(_root.OSvariables.StartMenuCellHeight)*0.05
this.icon._x=Number(_root.OSvariables.StartMenuCellHeight)*0.05
if(this.icon._height>this.icon._width){
this.icon._width=Number(_root.OSvariables.StartMenuCellHeight)*0.9*(this.icon._width/this.icon._height)
this.icon._height=Number(_root.OSvariables.StartMenuCellHeight)*0.9
}
else{
this.icon._height=Number(_root.OSvariables.StartMenuCellHeight)*0.9*(this.icon._height/this.icon._width)
this.icon._width=Number(_root.OSvariables.StartMenuCellHeight)*0.9
}
}
else{
this.IconLoadClip=this.createEmptyMovieClip("IconLoadClip",3);
this.IconLoadClip.lineStyle(Number(_root.OSvariables.StartMenuIconLoadBarLineThickness),Number(_root.OSvariables.StartMenuIconLoadBarLineColor),Number(_root.OSvariables.StartMenuIconLoadBarLineColorAlpha))
this.IconLoadClip.moveTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
this.IconLoadClip.beginFill(Number(_root.OSvariables.StartMenuIconLoadBarColor),Number(_root.OSvariables.StartMenuIconLoadBarColorAlpha))
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9*Math.floor(this.icon.getBytesLoaded()/this.icon.getBytesTotal()),Number(_root.OSvariables.StartMenuCellHeight)*0.05)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.9*Math.floor(this.icon.getBytesLoaded()/this.icon.getBytesTotal()),Number(_root.OSvariables.StartMenuCellHeight)*0.9)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.9)
this.IconLoadClip.lineTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
this.IconLoadClip.moveTo(Number(_root.OSvariables.StartMenuCellHeight)*0.05,Number(_root.OSvariables.StartMenuCellHeight)*0.05)
}
}
//Selecting of Item
_root.OSstartmenu["item"+i].ItemNumber=i
_root.OSstartmenu["item"+i].onMouseDown=function(){
if(_root._xmouse>0 and _root._xmouse<Number(_root.OSvariables.StartMenuCellWidth) and _root._ymouse>600-Number(_root.OSvariables.StartMenuCellHeight)*_root.OSvariables.StartMenuItemsNumber+(this.ItemNumber-1)*Number(_root.OSvariables.StartMenuCellHeight)-Number(_root.OSvariables.TaskbarHeight) and _root._ymouse<600-Number(_root.OSvariables.StartMenuCellHeight)*_root.OSvariables.StartMenuItemsNumber+(this.ItemNumber)*Number(_root.OSvariables.StartMenuCellHeight)-Number(_root.OSvariables.TaskbarHeight)){
_root.OSvariables.OpenNewWindow=1
_root.OSvariables.NewWindowName=_root.OSvariables["StartMenuItem"+this.ItemNumber+"Name"]
_root.OSvariables.NewWindowURL=_root.OSvariables["StartMenuItem"+this.ItemNumber+"URL"]
_root.OSvariables.NewWindowIconURL=_root.OSvariables["StartMenuItem"+this.ItemNumber+"IconURL"]
}
}
}
_root.OSstartmenu._x=0;
_root.OSstartmenu._y=600-_root.OSstartmenu._height+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight);
}
if((_root._xmouse>_root.OSstartmenu._width or _root._xmouse<0 or _root._ymouse<600-_root.OSstartmenu._height+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight) or _root._ymouse>600+Number(_root.OSvariables.StartMenuLineThickness)*2-Number(_root.OSvariables.TaskbarHeight)) and (_root._xmouse<0 or _root._xmouse>Number(_root.OSvariables.StartButtonWidth) or _root._ymouse>600 or _root._ymouse<600-Number(_root.OSvariables.TaskbarHeight))){
_root.OSstartmenu.clear();
for(t in _root.OSstartmenu){_root.OSstartmenu[t].removeMovieClip()}
}
}
//Finish of Creating startmenu