Я думаю, что ваша проблема связана с вашими привязками. BindingUtils.bindProperty
дается ваш экземпляр panel
, он пробует его на графе объектов и делает его неприменимым для сборки мусора.
bindProperty
возвращает ChangeWatcher
, который можно использовать для отмены регистрации привязки, когда вы закончите с ней. Примерно так:
var watchers : Array = [];
var panel:SuperPanel = new SuperPanel();
panel.width = 300;
panel.height = 200;
panel.minWidth = 200;
panel.minHeight = 100;
panel.title = "My Panel " + (panelContainer.numChildren + 1);
panel.addEventListener(CloseEvent.CLOSE, function(event:CloseEvent):void{
for each(var watcher : ChangeWatcher in watchers) {
watcher.unwatch();
}
event.target.parent.removeChild(event.target);
});
watchers.push(BindingUtils.bindProperty(panel, "allowDrag", allowDragCheck, "selected"));
watchers.push(BindingUtils.bindProperty(panel, "allowResize", allowResizeCheck, "selected"));
watchers.push(BindingUtils.bindProperty(panel, "allowClose", allowCloseCheck, "selected"));
watchers.push(BindingUtils.bindProperty(panel, "allowMaximize", allowMaxCheck, "selected"));
watchers.push(BindingUtils.bindProperty(panel, "allowMinimize", allowMinCheck, "selected"));
panelContainer.addChild(panel);
Кроме того, вы не переопределили событие clone
в SuperPanelEvent
, которое позже вызовет проблемы. См. Этот вопрос для получения более подробной информации .