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:
@@ -22,6 +22,7 @@ package com.threerings.stage.client {
|
||||
import flash.display.DisplayObject;
|
||||
import flash.display.Sprite;
|
||||
|
||||
import com.threerings.miso.client.Tickable;
|
||||
import com.threerings.miso.util.MisoSceneMetrics;
|
||||
import com.threerings.miso.util.MisoUtil;
|
||||
import com.threerings.stage.data.StageLocation;
|
||||
@@ -44,9 +45,18 @@ public class CharacterIsoSprite extends IsoSprite
|
||||
wrapper.y = _metrics.tilehhei;
|
||||
wrapper.addChild(disp);
|
||||
|
||||
_character = disp;
|
||||
|
||||
sprites = [wrapper];
|
||||
}
|
||||
|
||||
public function tick (tickStamp :int) :void
|
||||
{
|
||||
if (_character is Tickable) {
|
||||
Tickable(_character).tick(tickStamp);
|
||||
}
|
||||
}
|
||||
|
||||
public function isMoving () :Boolean
|
||||
{
|
||||
return false; //TODO Path
|
||||
@@ -77,5 +87,7 @@ public class CharacterIsoSprite extends IsoSprite
|
||||
protected var _bodyOid :int;
|
||||
|
||||
protected var _metrics :MisoSceneMetrics;
|
||||
|
||||
protected var _character :DisplayObject;
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import flash.display.DisplayObject;
|
||||
import flash.geom.Point;
|
||||
import flash.geom.Rectangle;
|
||||
|
||||
import flash.events.Event;
|
||||
import flash.events.MouseEvent;
|
||||
|
||||
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.SetListener;
|
||||
|
||||
import com.threerings.miso.client.Tickable;
|
||||
import com.threerings.miso.util.MisoSceneMetrics;
|
||||
import com.threerings.miso.util.MisoUtil;
|
||||
|
||||
import as3isolib.geom.Pt;
|
||||
|
||||
public class CrowdStageScenePanel extends StageScenePanel
|
||||
implements OccupantObserver
|
||||
implements OccupantObserver, Tickable
|
||||
{
|
||||
private var log :Log = Log.getLog(CrowdStageScenePanel);
|
||||
|
||||
@@ -76,6 +78,25 @@ public class CrowdStageScenePanel extends StageScenePanel
|
||||
recomputeProximate();
|
||||
|
||||
_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
|
||||
@@ -87,6 +108,13 @@ public class CrowdStageScenePanel extends StageScenePanel
|
||||
updateDisplayForScene();
|
||||
}
|
||||
|
||||
public function tick (tickStamp :int) :void
|
||||
{
|
||||
_sprites.forEach(function (key :int, sprite :CharacterIsoSprite) :void {
|
||||
sprite.tick(tickStamp);
|
||||
});
|
||||
}
|
||||
|
||||
protected function updateDisplayForScene () :void
|
||||
{
|
||||
// remove all old-scene sprites
|
||||
|
||||
Reference in New Issue
Block a user