Class Runner2D<TT, NA>

Runner BaseRunnerにVector2要素および関連機能を持たせたクラス

Example

// Target setup
const point = {x: 0, y: 0};

// Runner setup
const runner = new Runner(point);
// pointパラメータを1/60秒毎にx, yそれぞれ2ずつ加算する
// それを120ステップ行う
runner.setVector(2, 2);
runner.addAction(function* progressAction() {
let count = 0;
while (count < 120) {
this.target.x += this.vx;
this.target.y += this.vy;
yield count++;
}
});
runner.reset();

// Loop while runner is alive
function loop() {
const res = runner.step();
if (res) requestAnimationFrame(loop);
}
loop();

Description

vectorについて

Runnerは対象物をコントロールするための2次元Vectorを内部に保持する これにより速度や進行方向を操作することが可能

vector値の読み書き

  • 読み取りはgetVector, vx/vy getter
  • 変更はsetVector, vx/vy setter

などを使い、直接のVector書き換えはやらないこと

vector長の大きさはsetSpeed、 方向はsetDirection等 でも操作可能

Type Parameters

  • TT = any

  • NA extends string = string

Hierarchy

Constructors

  • Type Parameters

    • TT = any

    • NA extends string = string

    Parameters

    • Optional target: TT

    Returns Runner2D<TT, NA>

Properties

_generator?: Generator<unknown, any, unknown>
_isAwake: boolean = true
_loop: boolean = false
_speed: number = 1

速度値(内部的にはvector長)

_taskList: CoroutineTask[] = []
_vectorRadian: number = 0

vector用の内部ラジアン値 基本的にはこの値をベースにvectorパラメータを更新する

addAction: ((action: RunnerAction<TT>, ...args: any) => Runner2D<TT, NA>)

Type declaration

target?: TT

Runner対象オブジェクト

vector: Readonly<Vector2> = ...

vectorプロパティは保護されてます。 取得する場合はgetVectorメソッドを使用のこと

Accessors

  • get dead(): boolean
  • [jp] 稼働中の内部ジェネレータがあるかどうかを返す

    [en] Returns true when inner-generator doesn't exists

    Returns boolean

  • get isAwake(): boolean
  • [jp] 稼働状態を返す。 falseの際はstepを実行しても進まない pause/resumeなどで更新

    [en] Return isAwake

    Returns boolean

  • get speed(): number
  • 速度(vector長)

    Returns number

  • get vectorAngle(): number
  • vectorの向きをラジアン値で返す

    Returns number

  • get vx(): number
  • x軸進行方向(vector.x)

    Returns number

  • set vx(v: number): void
  • Parameters

    • v: number

    Returns void

  • get vy(): number
  • y軸進行方向(vector.y)

    Returns number

  • set vy(v: number): void
  • Parameters

    • v: number

    Returns void

  • get actionDictionary(): Map<string, ((...args: any[]) => Generator<unknown, any, unknown>)>
  • Returns Map<string, ((...args: any[]) => Generator<unknown, any, unknown>)>

Methods

  • (WIP, maybe removed)

    [en] Add action with pre-registered action name

    [jp] 予め登録したアクション名でアクションを追加

    Example

    import {ActionDictionary,BaseRunner} from "pgul"

    ActionDictionary.register("goto", function* (x, duration) {
    let count = 0;
    const progressUnit = (x - this.target.x) / duration;
    while (count < duration) {
    this.target.x += progressUnit;
    yield count++;
    }
    });

    // Load action
    const runner = new BaseRunner<any, "goto">();
    runner.addActionByName("goto", 200, 120);

    Returns

    Parameters

    • actionName: NA
    • Rest ...args: any

      args for runnerAction

    Returns Runner2D<TT, NA>

  • [jp] タスクを追加

    [en] Add coroutine task

    Returns

    this

    Parameters

    • taskObj: CoroutineTask

      func<*function>とarguments<any[]>をもったオブジェクト

    • resetAfterAdding: boolean = false

      追加後に内部Generatorをリセットするかどうか

    Returns Runner2D<TT, NA>

  • [jp] 内部Generatorをクリア(コルーチン処理消去)

    [en] Clear current running generator.

    Returns

    this

    Returns Runner2D<TT, NA>

  • 度数単位で現在の進行方向(vector方向)を取得

    Returns number

  • ラジアン単位で現在の進行方向(vector方向)を取得

    Returns number

  • vectorのクローンオブジェクトを返す

    Returns Vector2

  • [jp] 処理をポーズする(step処理をスキップするようにする)

    [en] Pause coroutine stepping.

    Returns

    this

    Returns Runner2D<TT, NA>

  • [jp] taskリストからジェネレーターをリセット

    [en] Reset

    Returns

    this

    Returns Runner2D<TT, NA>

  • [jp] ポーズ中の処理を再開

    [en] Resume coroutine stepping.

    Returns

    this

    Returns Runner2D<TT, NA>

  • 進行方向(vector)を回転

    Parameters

    • addedAngleRadian: number

    Returns Runner2D<TT, NA>

  • 進行方向(vector方向)をセット(度数単位)

    Parameters

    • degree: number

      度数単位

    • Optional speed: number

    Returns Runner2D<TT, NA>

  • 進行方向(vector方向)をセット(ラジアン単位)

    Alias

    setVectorAngle

    Parameters

    • radian: number

    Returns Runner2D<TT, NA>

  • [jp] ループを設定

    [en] Whether to reset generator after it is "done".

    Returns

    this

    Parameters

    • flag: boolean = true

    Returns Runner2D<TT, NA>

  • 速度をセット(内部的にはvector長をセット)

    Parameters

    • speed: number

    Returns Runner2D<TT, NA>

  • vectorパラメータをセット

    内部ラジアン値及びスピード値も同時に変更される

    Parameters

    • Optional x: number

      無指定の場合はそのまま

    • Optional y: number

      無指定の場合はそのまま

    Returns Runner2D<TT, NA>

  • 進行方向(vector方向)をセット(ラジアン単位)

    Alias

    setDirectionByRadian

    Parameters

    • radian: number

    Returns Runner2D<TT, NA>

  • [jp] step可能にする 内部ジェネレーターリセットも兼ねる

    [en] Reset and enable coroutine stepping

    Returns

    this

    Returns Runner2D<TT, NA>

  • [jp] ルーチン処理を進める ループが有効な場合はジェネレーターをリセットする

    [en] Step inner Generator

    Returns

    稼働状態であればnext結果を返す

    Returns void | IteratorResult<any, any>

  • [jp] taskリストをジェネレーターオブジェクトに変換

    [en] convertTaskListToGenarator

    Returns

    Converted Generator

    Parameters

    Returns Generator<unknown, void, unknown>

  • Parameters

    • Rest ...params: [name: string, genFunc: ((this: BaseRunner<any, string>, ...args: any[]) => Generator<unknown, any, unknown>)]

    Returns void

Generated using TypeDoc