Тестируйте, 4раза onButtonCreate(_mcButton0,100,100);
1раз onButtonDelete(_mcButton0);
По вашим словам дожно быть 4шт( stage.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent)

Код AS3:
package {
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.MouseEvent;
public class Cbut extends MovieClip {
private var _mcButton0:mcButton=new mcButton ;
private var _mcButton1:mcButton1=new mcButton1 ;
private var _mcButton2:mcButton=new mcButton ;
private var _mcButton3:mcButton1=new mcButton1 ;
private var _bDown:Boolean=false;
private var _oDownButon:Object=new Object ;
//private var _iCounter:int=0;
public function Cbut() {
// constructor code
onButtonCreate(_mcButton0,100,100);
onButtonCreate(_mcButton1,200,100);
onButtonCreate(_mcButton2,200,200);
onButtonCreate(_mcButton3,100,200);
onButtonDelete(_mcButton0);
}
private function onButtonCreate(But,x:int,y:int):void {
//trace(But as MovieClip)
addChild(But);
But.stop();
But.x=x;
But.y=y;
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseEvent);
this.addEventListener(MouseEvent.MOUSE_OUT, onMouseEvent);
this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseEvent);
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent);
}
private function onButtonDelete(But:MovieClip):void {
But.removeEventListener(MouseEvent.MOUSE_OVER, onMouseEvent);
But.removeEventListener(MouseEvent.MOUSE_OUT, onMouseEvent);
But.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseEvent);
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseEvent);
removeChild(But);
But=null;
}
private function onMouseEvent(event:MouseEvent):void {
//_iCounter++;
switch (event.type) {
case MouseEvent.MOUSE_OVER :
if (_bDown&&_oDownButon==event.target) {
_oDownButon.gotoAndStop(3);
} else {
event.target.gotoAndStop(2);
}
break;
case MouseEvent.MOUSE_OUT :
event.target.gotoAndStop(1);
break;
case MouseEvent.MOUSE_DOWN :
//stage.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent);
_oDownButon=event.target;
event.target.gotoAndStop(3);
_bDown=true;
break;
case MouseEvent.MOUSE_UP :
if (!(event.target is Stage)) {
event.target.gotoAndStop(2);
}
trace("Не работает")
//stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseEvent);
_bDown=false;
break;
}
}
}
}