<<< Back to ruelke.net
public class Boat
{
// unique state ids
public static const STATE_ANCHORING:int = 0;
public static const STATE_FLOATING:int = 1;
public static const STATE_SAILING:int = 2;
public static const NUMBER_OF_STATES:int = 3;
private var m_statemachine:cStatemachine = null;
public function Boat()
{
// set up state- machine diagram
m_sm = new cStatemachine(NUMBER_OF_STATES);
m_sm.AddState(ST_ANCHORING, StateAnchoring);
m_sm.AddTransition(ST_ANCHORING, IsAnchorUp, ST_FLOATING);
m_sm.AddState(ST_FLOATING, StateFloating);
m_sm.AddTransition(ST_FLOATING, IsSailOut, ST_SAILING);
m_sm.AddTransition(ST_FLOATING, IsAnchorDown, ST_ANCHORING);
m_sm.AddState(ST_SAILING, StateSailing);
m_sm.AddTransition(ST_FLOATING, IsSailIn, ST_FLOATING);
// set initial state
m_statemachine.SetState(STATE_ANCHORING);
}
// state methods
private function StateAnchoring(_event:int) : void { ... }
private function StateFloating(_event:int) : void { ... }
private function StateSailing(_event:int) : void { ... }
// transition triggers
private function IsAnchorUp(_event:int) : Boolean { ... };
private function IsAnchorDown(_event:int) : Boolean { ... };
private function IsSailIn(_event:int) : Boolean { ... };
private function IsSailOut(_event:int) : Boolean { ... };
}
<<< Back to ruelke.net
syntax highlighted by Code2HTML, v. 0.9.1