Ну уж если ты в восьмерке делаешь, так и используй blend'ы.
А ругать гениальных разработчиков всяк горазд, кто хоть десять строк кода написал в своей жизни

Просто инструменты гораздо более общее применение имеют, а на каждую конкретную задачу свой метод создавать - шибко жирно компиллятор будет весить

Код:
// создаем контейнер
_root.createEmptyMovieClip("obadva_mc",1);
obadva_mc.createEmptyMovieClip("ramka_mc",1);
// рисуем внешний прямоугольник
with(obadva_mc.ramka_mc){
beginFill(0xFF0000); moveTo(10, 10);
lineTo(400, 10); lineTo(400, 300);
lineTo(10, 300); lineTo(10, 10);
endFill();
}
obadva_mc.createEmptyMovieClip("mask_mc",5);
// рисуем внутренний прямоугольник
with(obadva_mc.mask_mc){
beginFill(0xFFFF00); moveTo(30, 30);
lineTo(380, 30); lineTo(380, 280);
lineTo(30, 280); lineTo(30, 30);
endFill();
}
// назначаем режим наложения
obadva_mc.blendMode = 2
obadva_mc.mask_mc.blendMode = 11
// регулируем прозрачность дырки
obadva_mc.mask_mc._alpha = 50
Одна проблема - альфа дырки не может быть 0, должна быть хотябы 1%.
Но это незаметно.