SkinPerk
継承:Perk
セクション名:skin
優先度:210
概要
SkinPerkはユニットのHTMLに関する機能を付与します。またShadow DOMの有効化も、このパークが行います。
設定
書式-グローバル設定
全ユニットに共通な設定はグローバル設定の“system.skin”セクションに記述します。
{ "system": { "skin": { "options": { "path": String, "shadowDOM": "open"|"close", } } } }
書式-ユニット固有設定
各ユニット固有の設定は“skin”セクションに記述します。
{ "skin": { "options": { "fileName": String, "hasSkin": Boolean, "path": String, "shadowDOM": "open"|"closed", "skinRef": Boolean|String, }, "skins": { <skinName>: { "fileName": String, "HTML": String, "path": String, "rootNode": String, "type": "HTML"|"node"|"URL", "URL": String, }, ... } } }
書式-タグ属性
いくつかの設定は、タグ属性で指定することもできます。
<my-unit bm-skinref=Empty|String|"false" ></my-unit>
"fileName"
型:String
デフォルト:<タグ名>
HTMLのファイル名を指定します。拡張子は不要です。“skin.options”と“skin.skins.<skinName>“の2箇所に記述することができます。
優先順は高い順に、”skin.skins.<skinName>.fileName”、“skin.options.fileName”、"unit.options.fileName"で、いずれも指定がない場合はタグ名がファイル名として使われます。
ファイル名に拡張子“html”を付けたファイルをロードします。
"hasSkin"
型:Boolean
デフォルト:True
ユニットがHTMLを持つかどうかを指定します。Falseの場合、HTMLのロードは行われません。ただし、ロードに関連するイベント、beforeTransform、doTransform、afterTransformイベントは発生します。
"HTML"
型:String
HTMLの文字列を指定します。これはHTMLであって、HTMLのファイル名ではありません。“type”設定が“HTML“の時に使用されます。
"path"
型:String
HTMLファイルのパスを指定します。”skin.options”と“skin.skins.<skinName>“の2箇所に記述することができます。グローバル設定のパスと、ユニット固有設定のパスを連結したものが、最終的なパスとして使われます。
グローバル設定は”system.skin.options.path”、“system.unit.options.path”の優先順で使用され、ユニット固有設定は“skin.skins.<skinName>.path”、“skin.options.path”、“unit.options.path”の優先順で使用されます。
"rootNode"
型:String
ユニット内の特定のノードを指し示すセレクタ文字列を指定します。書式はquerySelector()と同じです。そのノードのinnerHTMLがスキンとして利用されます。“type”設定が“node”の時に使用されます。
"shadowDOM"
型:String
デフォルト:False
Shadow DOMを使用する場合、“open”または“closed”を指定します。それ以外の文字を指定すると、Shadow DOMを使用しません。デフォルトではShadow DOMを使用しません。
<skinName>
型:String
スキン名を指定します。デフォルトのスキンは“default”と指定してください。一つの<skinName>を、ユニットに適用することができます。basic.transformスペルを使って別のHTMLに切り替える際に、この名前を指定します。
"skinRef" / bm-skinref
型:Boolean|String
デフォルト:True
ユニットのデフォルトのスキンファイルへのURLを指定します。Trueの場合は、デフォルトのURLが使用されます。Falseの場合、スキンファイルのロードと適用が行われません。hasSkinオプションをFalseに設定するのと同じ意味になります。
bm-skinref属性を指定した場合、値が指定されていればファイルへのURL、値が指定されてなければTrueとみなされます。Falseを指定したい場合は、“false”という文字列を指定してください。
スキンファイルが存在しない場合、404エラーが発生し、ユニットの初期化が止まります。もしユニットにスキンファイルがないのであれば、明示的にfalseをセットしてください。
"type"
型:String
デフォルト:“URL”
HTMLテンプレートをどこから取得するかを指定します。タイプは“HTML“、”URL“、”node”, “inline”のいずれかです。“HTML“の場合は、”HTML“設定からHTML文字列を取得して使用します。”URL“の場合は、”URL“設定で指定されたURLからHTMLファイルをロードします。”node”の場合は、“rootNode”設定で指定されたセレクタを使いノードを取得し、それを利用します。“inline”の場合は、タグのinnerHTMLが使われます。
"URL"
型:String
HTMLファイルのURLを指定します。“type”設定が“URL“の時に使用されます。
イベントハンドラ
beforeTransform
設定の”skin.options.hasSkin”がTrueの場合(デフォルトはTrue)、summonスペルを使ってスキンをロードします。
summonスペルがHTMLをロードした際に作成したTemplateノードを、このイベントハンドラ内でクローンしたものがunitRootプロパティにセットされます。次のdoTransformで実際に適用されるまでは、ユニットのスキンに対する操作はこのクローンに対して行われ、画面には描画されません。
参照する設定
doTransform
設定の“skin.options.hasSkin”がTrueの場合(デフォルトはTrue)、applyスキルを使って、beforeTransformで作成されたTemplateのクローンをユニットに追加し、表示します。
参照する設定
インベントリ
skins
型:Object
対象:インスタンス
スキン情報を保持するオブジェクトです。それぞれのアイテムは以下のキーを持っています。
キー | 型 | 説明 |
---|---|---|
name | String | スキン名です。 |
HTML | String | スキンのHTMLです。 |
template | String | スキンのHTMLから作られたtemplateノードです。 |
status | String | スキンのロード状態を示します。“”(空白)またはloaded“の値を取ります。 |
active
型:Object
対象:インスタンス
現在アクティブなスキン情報を格納するオブジェクトです。
以下のキーを持ちます。
キー | 型 | 説明 |
---|---|---|
skinName | String | 現在有効なスキン名です。applyスキルを使用すると、セットされます。 |
スキル
apply
型:Undefined
対象:Unit
ユニットにスキンを適用します。指定されたスキンが既に適用されている場合、何もしません。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
skinName 必須 | String | 適用するスキンの名前です。 |
clone | Node | 適用するテンプレートです。指定がない場合、スキン情報にあるテンプレートが使用されます。 |
戻り値
なし。
例外
- 指定されたスキンがまだロードされてない場合。
スペル
summon
型:Object
対象:Unit
HTMLファイルをロードします。ロードするのみでユニットには適用されません。既にロード済みの場合は、ロードされません。optionsパラメータが渡されない場合、パラメータで指定されたスキン名の設定を参照します。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
skinName 必須 | String | ロードするスキン名です。 |
options | Object | 設定の<skinName>の値と同じものです。 |
戻り値
ロードしたスキンのスキン情報オブジェクトを返します。