Код AS3:
if (_onClose != null)
{
var f:Function = _onClose;
_onClose = null;
f();
}
вот это называется "сам себя запутал"
А вообще, нет никакого преимущества в вашем коде по сравнению с нормально написаным, только незначительные недостатки - слушаетля _closeButton будет тяжело найти (outline panel), и вообще неряшливо оформленный код. Кроме того, этот слушатель будет каждый раз создаваться по-новой, что может привести к непредвиденым последствиям.