From ab892bcd9dd7789a9da98218be43b522c69e5cb9 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Thu, 10 May 2007 23:46:34 +0000 Subject: [PATCH] Handles some boilerplate functionality. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@239 ed5b42cb-e716-0410-a449-f6a68f950b19 --- src/as/com/threerings/flash/FrameSprite.as | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/as/com/threerings/flash/FrameSprite.as diff --git a/src/as/com/threerings/flash/FrameSprite.as b/src/as/com/threerings/flash/FrameSprite.as new file mode 100644 index 00000000..e9d0e769 --- /dev/null +++ b/src/as/com/threerings/flash/FrameSprite.as @@ -0,0 +1,49 @@ +// +// $Id$ + +package com.threerings.flash { + +import flash.display.Sprite; + +import flash.events.Event; + +/** + * Convenience superclass to use for sprites that need to update every frame. + * (One must be very careful to remove all ENTER_FRAME listeners when not needed, as they + * will prevent an object from being garbage collected!) + */ +public class FrameSprite extends Sprite +{ + public function FrameSprite () + { + addEventListener(Event.ADDED_TO_STAGE, handleAdded); + addEventListener(Event.REMOVED_FROM_STAGE, handleRemoved); + } + + /** + * Called when we're added to the stage. + */ + protected function handleAdded (... ignored) :void + { + addEventListener(Event.ENTER_FRAME, handleFrame); + handleFrame(); // update immediately + } + + /** + * Called when we're added to the stage. + */ + protected function handleRemoved (... ignored) :void + { + removeEventListener(Event.ENTER_FRAME, handleFrame); + } + + /** + * Called to update our visual appearance prior to the flash player each frame. + */ + protected function handleFrame (... ignored) :void + { + // nothing here. Override in yor subclass. + } +} + +}