Причина, по которой он добавляется за пределы поля, заключается в том, что drawRoundRect все еще создает спрайт в точке 0,0 на сцене, но не начинает заливку до 40,40. Вы можете проверить это, проследив свойства bin x и y, чтобы увидеть, что они начинаются с 0,0, а свойства width и height, чтобы увидеть, что они оба - 100, а не 60. Возможно, вам повезет больше, если вы отрисовываете все объекты от 0 0, а затем просто настройте родительский DisplayObject следующим образом:
import flash.display.Sprite;
var bin:Sprite = new Sprite();
var cir:Sprite = new Sprite();
bin.graphics.beginFill(0xff0000,1);
bin.graphics.drawRoundRect(0,0,60,60,5,5);
bin.graphics.endFill();
cir.graphics.beginFill(0x00ff00,1);
cir.graphics.drawCircle(0,0,30);
cir.graphics.endFill();
addChild(bin);
bin.addChild(cir);
bin.x = bin.y = 40; //move the parent object, all child objects will move with it