ммм, используя MovieClip вместо Shape. мувиклип также имеет графический объект.
import flash.display.MovieClip ;
//import flash.display.Graphics;//not needed
//stage.addEventListener(Event.ENTER_FRAME, startAnim); //remove enterframe
//function startAnim(e:Event):void { //no need for a handler
var shape1:MovieClip = new MovieClip();
shape1.graphics.beginFill(0x333333,1);
shape1.graphics.drawRect(40,50,250,125);
shape1.graphics.endFill();
addChild(shape1); // this will add a MovieClip of rectangle to stage
shape1.addEventListener(MouseEvent.MOUSE_DOWN, dragShape);
function dragShape(E:MouseEvent)
{
shape1.startDrag()
}
shape1.addEventListener(MouseEvent.MOUSE_UP, dropShape);
function dropShape(E:MouseEvent)
{
shape1.stopDrag()
}
//} no need for that either :)
будьте осторожны, так как ваша функция вызывается при ENTER_FRAME = 25 или более раз в секунду, поэтому вы создадите и добавите клип на сцену 25 или более раз в секунду
+ ссылка создается локально в функции, поэтому вы не сможете получить доступ к «shape1» извне, как только ваш объект будет создан.