Class

Scene

stdgam.Scene(dfn)

ゲームにおける1つのモード, または1つのステージを表すクラス. GameEngineからロードして使う.

シーンは「スプライトリスト」と「タスクリスト」を持つ. スプライトは draw(GE, ctx) メソッドを持つものの総称であり, 各フレームの描画処理を行う (ここで, GEはGameEngine, ctxは描画に使うコンテクスト). 一方, タスクは execute(GE) メソッドを持つものの総称であり, 1フレームごとにタスク処理を行う.

これに加えて, Scene自体も draw(GE, ctx) や execute(GE) を持つことができる. これらの機能を組み合わせてゲーム内の処理を実現する.

Constructor

# new Scene(dfn)

dfnが渡された場合, 共通の処理を済ませた後にその内容を自身に代入する. これにより, 派生クラスを作らなくても, dfnの中に追加の定義を書いておけば それを自身に適用できる.

例)

let scene = new stdgam.Scene({
    onLoad(GE, args){ ...初期化処理... },
    draw(GE, ctx){ ...描画処理... } }
});

上の例は次と等価である:

let scene = new stdgam.Scene();
scene.onLoad = function(GE, args){ ...初期化処理... };
scene.draw(GE, ctx) = function{ ...描画処理... };
Parameters:
Name Type Description
dfn Object.<string, *>

このオブジェクトに追加で定義する 要素を集めた連想配列.

Properties:
Name Type Attributes Description
onLoad function <optional>

シーンがロードされた時に実行される初期化処理 (任意)

draw function <optional>

シーン独自の描画処理 (任意)

execute function <optional>

シーン独自のタスク処理 (任意)

View Source stdgam.js, line 60

Methods

# add(obj, firstopt)

スプライトとタスクを同時に登録するショートカット. まず, objがスプライトの条件を満たすならスプライトリストに登録する. 次に, objがタスクの条件を満たすならタスクリストに登録する. 両方の条件を満たす場合は, 両方のリストに追加される.

Parameters:
Name Type Attributes Default Description
obj Task | Sprite

登録するオブジェクト

first boolean <optional>
false

trueなら先頭に追加, falseなら末尾に追加

View Source stdgam.js, line 159

# addSequence(list, firstopt)

複数のオブジェクトを登録するためのショートカット. listの要素のうち, スプライトであるものはスプライトリストに, タスクであるものはタスクリストに追加する. 第2引数がtrueの場合, 順序を維持したままリストの先頭に追加する. 第2引数がfalseの場合, 順序を維持したままリストの末尾に追加する. 省略時は末尾に追加する.

Parameters:
Name Type Attributes Default Description
list Array.<(Sprite|Task)>

追加するオブジェクトの配列

first boolean <optional>
false

trueなら先頭に追加, falseなら末尾に追加

View Source stdgam.js, line 226

# addSprite(spr, firstopt)

スプライトをスプライトリストに追加する. 追加位置は, 第2引数がtrueのとき先頭, falseのとき末尾である. 省略したときは「末尾に」追加する.

Parameters:
Name Type Attributes Default Description
spr Sprite

登録するスプライト

first boolean <optional>
false

trueなら先頭に追加, falseなら末尾に追加

View Source stdgam.js, line 126

# addSpriteAfter(target, …objs)

スプライトリストの中に登録されているtargetの位置を探し, 第2引数以降に指定されたスプライトをその直後に追加する (順序を保つ). もしtargetが登録されていない場合, リストの末尾に追加する.

Parameters:
Name Type Attributes Description
target Sprite

追加位置の基準となるスプライト

objs Sprite <repeatable>

追加する1つ以上のスプライト

View Source stdgam.js, line 184

# addSpriteBefore(target, …objs)

スプライトリストの中に登録されているtargetの位置を探し, 第2引数以降に指定されたスプライトをその直前に追加する (順序を保つ). もしtargetが登録されていない場合, リストの先頭に追加する.

Parameters:
Name Type Attributes Description
target Sprite

追加位置の基準となるスプライト

objs Sprite <repeatable>

追加する1つ以上のスプライト

View Source stdgam.js, line 171

# addTask(task, firstopt)

タスクをタスクリストに追加する. 追加位置は, 第2引数がtrueのとき先頭, falseのとき末尾である. 省略したときは「末尾に」追加する.

Parameters:
Name Type Attributes Default Description
task Task

登録するタスク

first boolean <optional>
false

trueなら先頭に追加, falseなら末尾に追加

View Source stdgam.js, line 142

# addTaskAfter(target, …objs)

タスクリストの中に登録されているtargetの位置を探し, 第2引数以降に指定されたタスクをその直後に追加する (順序を保つ). もしtargetが登録されていない場合, リストの末尾に追加する.

Parameters:
Name Type Attributes Description
target Task

追加位置の基準となるタスク

objs Task <repeatable>

追加する1つ以上のタスク

View Source stdgam.js, line 210

# addTaskBefore(target, …objs)

タスクリストの中に登録されているtargetの位置を探し, 第2引数以降に指定されたタスクをその直前に追加する (順序を保つ). もしtargetが登録されていない場合, リストの先頭に追加する.

Parameters:
Name Type Attributes Description
target Task

追加位置の基準となるタスク

objs Task <repeatable>

追加する1つ以上のタスク

View Source stdgam.js, line 197

# init()

スプライトとタスクのリストを初期化する. このメソッドを明示的に呼ばない限り, superOnLoadを実行しても スプライトリストやタスクリストは初期化されない.

View Source stdgam.js, line 114

# superOnLoad(GE, args)

このシーンがGEのカレントシーンになったとき呼び出される. まず, GEをプライベートフィールドに保存する. 次に, もしthis.onLoad(GE, args)が定義されていればこれを実行する.

Parameters:
Name Type Description
GE stdgam.GameEngine

このシーンを実行するGameEngine

args Object.<string, *>

ロード処理のために引き渡す設定リスト

View Source stdgam.js, line 104

# superdraw(ctx)

登録されているスプライトのdraw(GE, ctx)を順番に実行する. ここでGEはこのゲームのGameEngine, ctxは描画に使うコンテクストである. その後, 「activeが真」または「activeがundefined」のスプライトだけを リストに残して, 他のスプライトはリストから削除する.

もしthis.draw(GE, ctx)が定義されている場合, 最後にこれを実行する.

Parameters:
Name Type Description
ctx CanvasRenderingContext2D

描画に使うコンテクスト

View Source stdgam.js, line 246

# superexecute()

登録されているタスクのexecute(GE)を順番に実行する. ここでGEはこのゲームのGameEngineである. ただし, あるタスクがfalseを返した場合, それより後のタスクは実行しない.

その後, 「activeが真」または「activeがundefined」のタスクだけを リストに残して, 他のタスクはリストから削除する. 最後に, もしthis.execute(GE)が定義されている場合, これを実行する.

実際には, stdgam.Templatesの機能を実現するために, execute(GE)の実行後, タスクが_traits要素を持つかどうかチェックする. もし存在すれば, その中身の関数も順番に実行する (引数はexecuteと同じ).

【注意】execute()の中でタスクの追加・削除を行うと, for文の実行中に 配列を変更したのと同じ現象が発生します! 特に, 自身よりも前に新しい要素を 追加する場合は, falseを返して後続の処理を止めてください.

View Source stdgam.js, line 269

# useCoroutine(GE, gen, optopt)

指定されたジェネレータ関数を使ってジェネレータを作り, このオブジェクトの 更新処理をこのジェネレータに委任する. 具体的には, このジェネレータを実行するだけの関数をthis.executeに代入する. ジェネレータが完了したときは, このメソッドを実行する直前のexecuteの値に戻す.

Parameters:
Name Type Attributes Default Description
GE stdgam.GameEngine

ジェネレータ関数の初期化時に渡すGameEngine

gen GeneratorFunction

処理を委任するジェネレータ関数

opt Object.<*, *> <optional>
{}

ジェネレータ関数の初期化時に渡すオプション

View Source stdgam.js, line 293