Thanks for all the suggestions!
Once I wrapped my head around how the CheckBox component works, it was pretty
easy to find the solution.
There's no need to add event listeners.
The correct way to go about it was to override the updateDisplayList function.
updateDisplayList() adds the icons to the display list putting them on top, so
all I needed to do was move my Sprite back to the top every time
updateDisplayList was called.
This function did the trick...
override protected function
updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(_midStateSprite != null){
setChildIndex(_midStateSprite,numChildren-1);
_midStateSprite.visible = _middle;
}
}