There have been some performance improvement added in the Observable class for Beta 3, see code fragment below.
Code:
Ext.define('Ext.util.Observable', {
...
constructor: function(config) {
...
// Hash of event "hasListeners" flags.
// For repeated events in time-critical code, the firing code should use
// if (!me.hasListeners.beforerender || me.fireEvent('beforerender', me) !== false) { //code... }
// Bubbling the events counts as one listener.
// The subclass may have already initialized it.
me.hasListeners = me.hasListeners || {};
...
},
...
So the sprite destroy method could be modified as recommended to take advantage of these changes. For example, if you are destroying 500 sprites, these changes will eliminate 1,000 function calls.
Code:
// current code
destroy: function() {
var me = this;
if (me.fireEvent('beforedestroy', me) !== false) {
me.remove();
me.surface.onDestroy(me);
me.clearListeners();
me.fireEvent('destroy');
}
}
// modified code to take advantage of Beta 3 changes
destroy: function () {
var me = this;
if (!me.hasListeners.beforedestroy || me.fireEvent('beforedestroy', me) !== false) {
me.remove();
me.surface.onDestroy(me);
me.clearListeners();
if (me.hasListeners.destroy) {
me.fireEvent('destroy');
}
}
}