文法
<if condition="#{@foo >= 4}">
(要素)
<elsif condition="#{@foo >= 2}" />
(要素)
<else />
(要素)
</if>
属性
(必須)condition="論理値"
主に
式展開による
条件式を記述します。条件式は
論理値に置換されます。
上の例では、
変数@fooの値が4以上の場合最初の
ブロックが評価され、@fooの値が4未満かつ2以上であれば2番めのブロックが、2未満であれば<else>から始まる最後のブロックが評価されます。
このように<if>はブロックを発生させるタグです。
<if>
<elsif/>
<else/>
のいずれかのタグの直後から
<elsif/>
<else/>
</if>
のいずれかのタグの直前までが1つの分岐ブロックです。
<if>が見つかった場合、condition属性がTRUEならそのブロックを解釈し、</if>まで解釈をスキップします。conditionがFALSEなら、ブロックの終わりまで解釈をスキップします。
<elsif>が見つかると、condition属性がTRUEならそのブロックを解釈し、</if>まで解釈をスキップします。conditionがFALSEなら、ブロックの終わりまで解釈をスキップします。
<else>が見つかると、そのブロックを解釈します。
1つの<if>要素内で解釈されるブロックは
いずれか1つだけです。
<else>が無く、どのconditionもTRUEでない場合、<if>の要素は全て解釈されません。
要素
分岐構文
親要素
動的予約変数が含まれた条件式は、そのifが含まれる
<bar>が解釈されるタイミング(time属性)での値を参照します。
ノートオブジェクトは、それが実際に判定処理されるより前に
譜面として流れてくる必要があります。判定タイミングの何秒前に生成されるかは実装やハイスピードに依存しますが、動的予約変数はノートを生成する時点での値が参照されるので、必然的にリアルタイム性が乏しくなります。
「スコア何点以上で譜面内容が変化する」といった条件分岐は可能ですが、正しく動作するかは実装に依存するため推奨されません。
ノートオブジェクトでない
タイミングオブジェクトは、たとえばある
小節の前半に通常のオブジェクト、後半に<if condition="#{@combo >= 100}">で囲まれたオブジェクトがあった場合、
小節突入時点でのコンボ数が参照されます。97コンボで小節に突入し、その小節内の<if>より前で100コンボに到達したとしても、条件を満たしたことにはなりません。
最終更新:2015年01月13日 17:40