Class Automaton<TT, SL>

[jp] FSMの概念を実装したクラス。

See

http://www.lancarse.co.jp/blog/?p=1039

あらかじめセットしたstateオブジェクトに応じてtargetに特定の振る舞いをさせる

Example

const sprite = new YourAnimationPlayableSprite()

const automaton = new Automaton();

// Add state: Default
automaton.registerState("Default", {
enter() {
sprite.playAnimation("Default");
},
update() {
if (0 < sprite.vector.x) return "MoveRight";
if (sprite.vector.x < 0) return "MoveLeft";
},
});

// Add state: Moving left
automaton.registerState("MoveLeft", {
enter() {
sprite.playAnimation("MoveLeft");
},
update() {
if (sprite.vector.x === 0) return "Default";
},
});

// Add state: Moving right
automaton.registerState("MoveRight", {
enter() {
sprite.playAnimation("MoveRight");
},
update() {
if (sprite.vector.x === 0) return "Default";
},
});

// Set default state
automaton.setState("Default");

Type Parameters

  • TT = any

  • SL = any

Hierarchy

  • Automaton

Constructors

Properties

_currentStateLabel?: SL
_stateBehaviorMap: Map<SL, StateBehaviour<TT, SL>>
target: TT

Accessors

  • get currentState(): undefined | SL
  • 現在の状態ラベル

    Returns undefined | SL

Methods

  • 指定ステートをセット その際にenterメソッドを実行

    Parameters

    • stateLabel: SL

      ステートを示すラベル

    • Rest ...enterFuncArgs: any[]

      可変長引数でenter実行時に引数を渡せる

    Returns Automaton<TT, SL>

  • 更新処理、基本的に毎フレーム呼び出す

    Parameters

    • Rest ...nextStateEnterArgs: any

    Returns void

Generated using TypeDoc