Then that's exactly what you need to do: override hitTest(). Starling uses hitTest() to determine if an object was touched. By moving your alpha check into hitTest(), you won't need to do anything special to pass the touch down to other objects. It will just work automatically.
I haven't tested this code, but this is should be pretty close to what you need in a subclass of Image:
(EDIT: fixed the incorrect boolean result at the end, as pointed out by @Zantafio)
override public function hitTest(localPoint:Point):DisplayObject
{
var result:DisplayObject = super.hitTest();
if(!result)
{
return null;
}
if(bitmapData.getPixel32(localPoint.x, localPoint.y) >> 24 & 0xFF) > _alpha_threshold)
{
return result;
}
return null;
}
You'd need to store the BitmapData somehow so that you could access it in hitTest(). A public variable on your subclass should do the trick.