Использовать BitmapData.
Когда на сцене появляется объект, с которым возможно столкновение, создавать BitmapData с копией этого объекта (методом BitmapData.draw()). Потом, например, BitmapDat`у сделать оттенками серого и размыть фильтром. А когда считать столкновения — брать значение цвета пикселя у картинки и по этому значению определять столкновение.
Я проиллюстрирую идею:
То, как должно происходить столкновение:
1. Создаем BitmapData с прозрачным фоном и убираем насыщенность и контраст.
2. Применяем блюр с параметрами размытия аналогичными тому, насколько другой объект может "въехать" в этот.
3. Когда необходим расчет столкновения, берем значение цвета пикселя у BitmapData c теми же координатами, что и у объекта, который сталкивается.
Вот как-то так. В принципе, для всех объектов, которые могут сталкиваться, можно создавать свойство с их BitmapData. И производить расчет "глубины" столкновения только когда hitTest() вернет true, то есть объекты габаритно пересекутся.
За оптимальность и изящность такого метода не ручаюсь, сам такое не пробовал, но, думаю, работать должно.