Skip to content

Instantly share code, notes, and snippets.

@markknol
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save markknol/b87bb8e342bc7934e333 to your computer and use it in GitHub Desktop.
Save markknol/b87bb8e342bc7934e333 to your computer and use it in GitHub Desktop.
AutoDisposer component for Flambe
package temple.components;
import flambe.Component;
/**
Dispose its owner entity after a given delay.
Example:
`myEntity.add(new AutoDisposer(5);`
Example with callback:
`myEntity.add(new AutoDisposer(5, function() trace("gone")));`
@author Mark Knol [mediamonks]
*/
class AutoDisposer extends Component
{
var _delay:Float;
var _time:Float = 0;
var _onBeforeDispose:Void->Void;
public function new(delay:Float = 0, onBeforeDispose:Void->Void = null)
{
_delay = (delay < 0) ? 0 : delay;
_onBeforeDispose = onBeforeDispose;
}
override public function onUpdate(dt:Float)
{
_time += dt;
if (_time >= _delay)
{
if (_onBeforeDispose != null) _onBeforeDispose();
if (owner != null) owner.dispose();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment