プロパティとメソッド
概要
BitmistJSのコンポーネントであるユニットは標準のHTMLElementを継承していますが、それ以外の機能はほぼ持っていません。BitsmistJSでは、パークと呼ばれるものをユニットにアタッチすることによって、ユニットに機能を追加します。ユニットにはプロパティとメソッドを追加することができますが、様々なパークが追加する機能の名前の衝突を防ぐため、プロパティとメソッドの追加は最小限にしています。代わりにアセットと呼ばれる入れ物を用意しており、各パークはそこへ機能を追加していくことになります。アセット内のアイテムは、“basic.scan”といったように、ピリオド区切りで各パーク固有の接頭語をつけることで、名前の衝突を防ぎます。
ライブラリ側でプロパティやメソッドを追加することを制限することはありません。接頭語をつけることもルールであって、強制する仕組みがあるわけではありません。従うかどうかは、あくまでも製作者に委ねられています。
アセットには、さまざまな種類のアイテムを格納する器を用意しています。デフォルトでは“inventory”、“vault”、“state”、“setting”、“skill”、“spell”というアセットがあります。
プロパティとメソッド
少ないながらも存在する、BitsmistJSのコアライブラリがユニットに付加するプロパティとメソッドを紹介します。それぞれ、ユニットから使用することを前提に考えられている(公開している)ものと、ユニットから直接使用することを考慮してない(非公開)のものがあります。
ここでは公開・非公開としていますが、具体的に何か違いがあるわけではありません。いずれにも、ユニットからアクセスすることは可能です。非公開のものは、アクセスしないことをお勧めします。
公開プロパティ・メソッド
主にアセットにアクセスするためのメソッドが用意されています。
名称 | 説明 |
---|---|
set() | アセットに値を格納します。 |
get() | アセットから値を取得します。 |
has() | 指定されたアイテムが、アセット内に存在するか確認します。 |
use() | アセット内のスキル、スペルを使用します。 |
uniqueId | ユニットのユニークなIDを格納します。 |
unitRoot | ユニットの起点となるノードを格納します。 |
非公開プロパティ・メソッド
非公開のプロパティは、頭に__bm_が付けられています。ライブラリ側でアクセスを防ぐことはできませんが、使用しないことをお勧めします。
名称 | 説明 |
---|---|
__bm_assets | アセットを格納するオブジェクトです。 |
__bm_uniqueid | ユニットのユニークIDを格納します。 |
__bm_unitroot | ユニットの起点となるノードを格納します。 |
__bm_initialized | ユニットが初期化済みかのフラグです。 |
__bm_ready | ユニットが初期化・終了化処理を行うことができるかを示します。 |
__bm_eventinfo | ユニットのイベントハンドラ情報を格納します。 |
また、ユニットがオーバーライドして実装することを前提としているメソッドがあります。
名称 | 説明 |
---|---|
_getSettings() | ユニットの設定を返します。 |
アセット
アセットとは、さまざまな種類のアイテムを格納する器です。デフォルトでは“inventory”、“vault”、“state”、“setting”、“skill”、“spell”というのものがあります。
種類 | 説明 |
---|---|
inventory | ユニットの公開情報を格納するアセットです。 |
vault | ユニットのプライベートな情報を格納するアセットです。 |
state | ユニットの状態に関する情報を格納するアセットです。 |
setting | ユニットの設定を格納するアセットです。 |
skill | ユニットのメソッドを格納するアセットです。 |
spell | ユニットの非同期なメソッドを格納するアセットです。 |
アセット内のアイテムにアクセスするためにset()、get()、use()のメソッドが用意されています。
種類 | 説明 |
---|---|
set() | アセットに値を格納するメソッドです。 |
get() | アセットから値を取得するメソッドです。 |
use() | アセット内のスキル、スペルを使用するメソッドです。 |
アセットにアイテムを追加する際には、“basic.scan”といったように、ピリオド区切りで頭に各パーク固有の接頭語をつけることで、名前の衝突を防いでいます。
インベントリ・ヴォルト・ステート
情報を格納するためのアセットとして、公開可能な情報を格納するインベントリ(inventory)、プライベートな情報を格納するヴォルト(vault)、状態に関する情報を格納するステート(state)があります。
それぞれの中身にアクセスするためには、set()、get()メソッドを使用します。
this.get("inventory", "skin.skins.default"); this.set("vault", "style.applied", ["default"]);
ヴォルトにはプライベートな情報を格納しますが、Javascriptでのアクセスを防ぐ機構があるわけではありません。セキュリティ的な用途に用いないでください。
設定
設定を格納するためのアセットとして、“setting”アセットがあります。設定もアセット同様、各パークの接頭語で区切られています。
this.get("setting", "skin.options.skinRef");
起動時に自身の_getSettings()メソッドや、外部設定ファイルから設定を読み込み格納します。
設定についての詳細は以下をご覧ください。
スキル・スペル
メソッドを格納するためのアセットとして、”skill“、”spell“があります。スキルとスペルの違いは、スキルには非同期ではないメソッド、スペルには非同期のメソッドを格納します。スペルはPromiseを返しますので、適切に処理してください。
スキル・スペルもアセット同様、各パークの接頭語で区切られています。
// Skill let ele = this.use("skill", "basic.scan", "btn-menu"); // Spell this.use("spell", "unit.materialize").then((addedUnit) => { addedUnit.use("spell", "dialog.open"); }); // or await this.use("spell", "unit.materialize"); addedUnit.use("spell", "dialog.open");