Use the Ticker to handle the ticking of the underlying character sprites.

git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@952 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
Mike Thomas
2010-08-11 20:10:48 +00:00
parent 69577bb939
commit 3d0615cedd
2 changed files with 41 additions and 1 deletions
@@ -22,6 +22,7 @@ package com.threerings.stage.client {
import flash.display.DisplayObject; import flash.display.DisplayObject;
import flash.display.Sprite; import flash.display.Sprite;
import com.threerings.miso.client.Tickable;
import com.threerings.miso.util.MisoSceneMetrics; import com.threerings.miso.util.MisoSceneMetrics;
import com.threerings.miso.util.MisoUtil; import com.threerings.miso.util.MisoUtil;
import com.threerings.stage.data.StageLocation; import com.threerings.stage.data.StageLocation;
@@ -44,9 +45,18 @@ public class CharacterIsoSprite extends IsoSprite
wrapper.y = _metrics.tilehhei; wrapper.y = _metrics.tilehhei;
wrapper.addChild(disp); wrapper.addChild(disp);
_character = disp;
sprites = [wrapper]; sprites = [wrapper];
} }
public function tick (tickStamp :int) :void
{
if (_character is Tickable) {
Tickable(_character).tick(tickStamp);
}
}
public function isMoving () :Boolean public function isMoving () :Boolean
{ {
return false; //TODO Path return false; //TODO Path
@@ -77,5 +87,7 @@ public class CharacterIsoSprite extends IsoSprite
protected var _bodyOid :int; protected var _bodyOid :int;
protected var _metrics :MisoSceneMetrics; protected var _metrics :MisoSceneMetrics;
protected var _character :DisplayObject;
} }
} }
@@ -24,6 +24,7 @@ import flash.display.DisplayObject;
import flash.geom.Point; import flash.geom.Point;
import flash.geom.Rectangle; import flash.geom.Rectangle;
import flash.events.Event;
import flash.events.MouseEvent; import flash.events.MouseEvent;
import com.threerings.crowd.client.OccupantObserver; import com.threerings.crowd.client.OccupantObserver;
@@ -52,13 +53,14 @@ import com.threerings.presents.dobj.EntryUpdatedEvent;
import com.threerings.presents.dobj.SetAdapter; import com.threerings.presents.dobj.SetAdapter;
import com.threerings.presents.dobj.SetListener; import com.threerings.presents.dobj.SetListener;
import com.threerings.miso.client.Tickable;
import com.threerings.miso.util.MisoSceneMetrics; import com.threerings.miso.util.MisoSceneMetrics;
import com.threerings.miso.util.MisoUtil; import com.threerings.miso.util.MisoUtil;
import as3isolib.geom.Pt; import as3isolib.geom.Pt;
public class CrowdStageScenePanel extends StageScenePanel public class CrowdStageScenePanel extends StageScenePanel
implements OccupantObserver implements OccupantObserver, Tickable
{ {
private var log :Log = Log.getLog(CrowdStageScenePanel); private var log :Log = Log.getLog(CrowdStageScenePanel);
@@ -76,6 +78,25 @@ public class CrowdStageScenePanel extends StageScenePanel
recomputeProximate(); recomputeProximate();
_vbounds = new Rectangle(0, 0, _isoView.size.x, _isoView.size.y); _vbounds = new Rectangle(0, 0, _isoView.size.x, _isoView.size.y);
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
}
/**
* Handles Event.ADDED_TO_STAGE.
*/
protected function addedToStage (event :Event) :void
{
_ctx.getTicker().registerTickable(this);
}
/**
* Handles Event.REMOVED_FROM_STAGE.
*/
protected function removedFromStage (event :Event) :void
{
_ctx.getTicker().removeTickable(this);
} }
override public function willEnterPlace (plObj :PlaceObject) :void override public function willEnterPlace (plObj :PlaceObject) :void
@@ -87,6 +108,13 @@ public class CrowdStageScenePanel extends StageScenePanel
updateDisplayForScene(); updateDisplayForScene();
} }
public function tick (tickStamp :int) :void
{
_sprites.forEach(function (key :int, sprite :CharacterIsoSprite) :void {
sprite.tick(tickStamp);
});
}
protected function updateDisplayForScene () :void protected function updateDisplayForScene () :void
{ {
// remove all old-scene sprites // remove all old-scene sprites