クラス BeMusicLoadHandler
- Object
-
- BeMusicLoadHandler
-
- すべての実装されたインタフェース:
BmsLoadHandler
public class BeMusicLoadHandler extends Object implements BmsLoadHandler
Be-Music用BMSコンテンツ読み込み時のハンドラです。当ハンドラでは、Be-Music特有の仕様をBMSコンテンツのローダーに付与します。 具体的には「CONTROL FLOW機能」を提供します。これは「#RANDOM」による乱数の生成と「#IF」等によるコンテンツ読み込みの ランダム化を実現するものとなっており、CONTROL FLOWを記述したBe-Music用BMSコンテンツでは読み込み毎に異なるデータを 読み込むことが可能となるものです。
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicLoadHandler()
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 BeMusicLoadHandler
setEnableControlFlow(boolean isEnable)
CONTROL FLOWの有効状態を設定します。BeMusicLoadHandler
setForceRandomValue(Long value)
CONTROL FLOWにおける乱数生成の値を強制します。void
startLoad(BmsLoaderSettings spec)
BmsLoader
の読み込み処理にて読み込みが開始された時に一度だけ呼び出されます。BmsTestResult
testChannel(BmsChannel channel, int index, int measure, Object value)
1個のタイムライン要素を解析した時に呼び出されます。BmsTestResult
testContent(BmsContent content)
BMSコンテンツの読み込みが完了した時に呼び出されます。BmsTestResult
testMeta(BmsMeta meta, int index, Object value)
1個のメタ情報を解析した時に呼び出されます。-
クラスから継承されたメソッド Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェースから継承されたメソッド BmsLoadHandler
createContent, createNote, parseError, testDeclaration
-
-
-
-
メソッドの詳細
-
setEnableControlFlow
public final BeMusicLoadHandler setEnableControlFlow(boolean isEnable)
CONTROL FLOWの有効状態を設定します。有効にすると、#RANDOMによる乱数生成と#IF~#ELSEIF~#ELSE~#ENDIFによるフロー制御が可能になります。 無効にするとこれらのフロー制御は無視され、フロー制御が存在しないものとして扱われます。
デフォルトではCONTROL FLOWは無効に設定されています。
- パラメータ:
isEnable
- CONTROL FLOW有効状態- 戻り値:
- このオブジェクトのインスタンス
-
setForceRandomValue
public final BeMusicLoadHandler setForceRandomValue(Long value)
CONTROL FLOWにおける乱数生成の値を強制します。1以上の値を指定すると#RANDOMの実行結果が必ず指定値となります。
0を指定すると全ての#IF, #ELSEIFが「真」を示さなくなり、必ず#ELSEブロックが処理されるようになります。
マイナス値またはnullを指定すると値の強制はOFFになり、ランダムな値が生成されるようになります。
デフォルトでは乱数値の強制はOFFになっています。
この値はCONTROL FLOWが有効になっている場合のみ使用されます。無効の場合、BMS読み込みに対しての作用はありません。
- パラメータ:
value
- 強制する乱数の値- 戻り値:
- このオブジェクトのインスタンス
-
startLoad
public void startLoad(BmsLoaderSettings spec)
BmsLoader
の読み込み処理にて読み込みが開始された時に一度だけ呼び出されます。当メソッドは1個のBMSの読み込みが開始される度に、アプリケーション固有の何らかの初期化処理を行いたい場合を想定して 用意されています。そのような事情がない場合は何も行う必要はありません。
当メソッドで例外をスローすると、後の処理で呼ばれる検査メソッドは一切呼ばれず、スローされた例外を内包した
BmsException
がスローされます。- 定義:
startLoad
インタフェース内BmsLoadHandler
- パラメータ:
spec
- BMSローダーの設定
-
testMeta
public BmsTestResult testMeta(BmsMeta meta, int index, Object value)
1個のメタ情報を解析した時に呼び出されます。当メソッドが呼び出される契機は、BMS仕様に定義のあるメタ情報の解析が正常に行われた後です。デフォルトの動作では、 BMS仕様に準拠したメタ情報は全てBMSコンテンツ内に記録されます。アプリケーションが個々のメタ情報に対して固有の検査を行う必要が ある場合は当メソッドで検査処理を実装してください。
解析されたメタ情報の検査結果は戻り値でBMSローダに報告します。
BMS仕様にないメタ情報を検出しても当メソッドは呼び出されず、直接
BmsLoadHandler.parseError(com.lmt.lib.bms.BmsScriptError)
が呼び出されます。当メソッドで例外をスローした場合、当該例外を内包した
BmsException
がスローされます。- 定義:
testMeta
インタフェース内BmsLoadHandler
- パラメータ:
meta
- メタ情報index
- インデックスvalue
- 解析後の値。データ型は当該メタ情報のデータ型に依存します。- 戻り値:
BmsTestResult
参照- 関連項目:
BmsMeta
,BmsType
,BmsTestResult
-
testChannel
public BmsTestResult testChannel(BmsChannel channel, int index, int measure, Object value)
1個のタイムライン要素を解析した時に呼び出されます。当メソッドが呼び出される契機は、BMS仕様に定義のあるチャンネルが正常に解析された後です。デフォルトの動作では BMS仕様に準拠したタイムライン要素は全てBMSコンテンツ内に記録されます。アプリケーションが個々のタイムライン要素に対して 固有の検査を行う必要がある場合は当メソッドで検査処理を実装してください。
解析されたタイムライン要素の検査結果は戻り値でBMSローダに報告します。
BMS仕様にないチャンネルを検出しても当メソッドは呼び出されず、直接
BmsLoadHandler.parseError(com.lmt.lib.bms.BmsScriptError)
が呼び出されます。当メソッドで例外をスローした場合、当該例外を内包した
BmsException
がスローされます。- 定義:
testChannel
インタフェース内BmsLoadHandler
- パラメータ:
channel
- チャンネルindex
- チャンネルインデックスmeasure
- 小節番号value
- チャンネルの値。データ型は当該チャンネルのデータ型に依存します。- 戻り値:
BmsTestResult
参照- 関連項目:
BmsChannel
,BmsType
,BmsTestResult
-
testContent
public BmsTestResult testContent(BmsContent content)
BMSコンテンツの読み込みが完了した時に呼び出されます。BmsLoader
のBMSコンテンツ読み込みメソッドで指定した入力ソースからのBMSコンテンツ読み込みの全工程が完了した後、 最後に当メソッドが呼び出されます。当メソッドの目的は読み込まれたBMSコンテンツの最終チェックを行うことにあります。 例えば、BMSコンテンツ内に特定のメタ情報やチャンネルが定義されているかをチェックしたり、読み込み工程における状態の最終値が 期待する値であるかをチェックしたりなどです。読み込みの全工程が完了する前に検査失敗や何らかの読み込みエラーが発生し、読み込み処理が停止した場合には 当メソッドは実行されません。1回の読み込み処理毎に必ず当メソッドが実行されるわけではないことに注意してください。
当メソッドの引数で渡されるBMSコンテンツは編集しても構いません。ただし、当メソッドを抜ける前に必ず
BmsContent.endEdit()
を実行して編集モードを完了させてください。編集モードのまま処理を終了すると BMSコンテンツの読み込み処理失敗と判定されてしまいます。当メソッドから返す検査結果に
BmsTestResult.RESULT_FAIL
を設定するとBMSコンテンツ読み込みは失敗します。 それ以外の検査結果は全て読み込み成功と判定されます。当メソッドで例外をスローした場合、当該例外を内包した
BmsException
がスローされます。当メソッドの既定の動作では
BmsTestResult.OK
を返します。- 定義:
testContent
インタフェース内BmsLoadHandler
- パラメータ:
content
- 読み込みの完了したBMSコンテンツ- 戻り値:
- 検査結果
-
-