クラス 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コンテンツでは読み込み毎に異なるデータを 読み込むことが可能となるものです。
- 導入されたバージョン:
- 0.0.1
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicLoadHandler()
-
メソッドの概要
すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 BeMusicLoadHandlersetEnableControlFlow(boolean isEnable)CONTROL FLOWの有効状態を設定します。BeMusicLoadHandlersetForceRandomValue(Long value)CONTROL FLOWにおける乱数生成の値を強制します。voidstartLoad(BmsLoaderSettings spec)BmsLoaderの読み込み処理にて読み込みが開始された時に一度だけ呼び出されます。BmsTestResulttestChannel(BmsChannel channel, int index, int measure, Object value)1個のタイムライン要素を解析した時に呼び出されます。BmsTestResulttestContent(BmsContent content)BMSコンテンツの読み込みが完了した時に呼び出されます。BmsTestResulttestMeta(BmsMeta meta, int index, Object value)1個のメタ情報を解析した時に呼び出されます。static BeMusicLoadHandlerwithControlFlow()CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。static BeMusicLoadHandlerwithControlFlow(long fixedValue)CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。static BeMusicLoadHandlerwithoutControlFlow()CONTROL FLOWを無効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。-
クラスから継承されたメソッド Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェースから継承されたメソッド BmsLoadHandler
createContent, createNote, parseError, testDeclaration
-
-
-
-
メソッドの詳細
-
setEnableControlFlow
public BeMusicLoadHandler setEnableControlFlow(boolean isEnable)
CONTROL FLOWの有効状態を設定します。有効にすると、#RANDOMによる乱数生成と#IF~#ELSEIF~#ELSE~#ENDIFによるフロー制御が可能になります。 無効にするとこれらのフロー制御は無視され、フロー制御が存在しないものとして扱われます。
デフォルトではCONTROL FLOWは無効に設定されています。
- パラメータ:
isEnable- CONTROL FLOW有効状態- 戻り値:
- このオブジェクトのインスタンス
-
setForceRandomValue
public 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の読み込みが開始される度に、アプリケーション固有の何らかの初期化処理を行いたい場合を想定して 用意されています。そのような事情がない場合は何も行う必要はありません。
当メソッドで例外がスローされると、その例外を内包した
BmsHandleExceptionがスローされます。- 定義:
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)が呼び出されます。当メソッドで例外がスローされると、その例外を内包した
BmsHandleExceptionがスローされます。- 定義:
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)が呼び出されます。当メソッドで例外がスローされると、その例外を内包した
BmsHandleExceptionがスローされます。- 定義:
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コンテンツ読み込みは失敗します。 それ以外の検査結果は全て読み込み成功と判定されます。当メソッドで例外がスローされると、その例外を内包した
BmsHandleExceptionがスローされます。当メソッドの既定の動作では
BmsTestResult.OKを返します。- 定義:
testContentインタフェース内BmsLoadHandler- パラメータ:
content- 読み込みの完了したBMSコンテンツ- 戻り値:
- 検査結果
-
withControlFlow
public static BeMusicLoadHandler withControlFlow()
CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。当メソッドを使用して生成したハンドラではCONTROL FLOWが有効になり #RANDOMの値は毎回異なる値を示すようになります。
- 戻り値:
- CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラ
- 導入されたバージョン:
- 0.9.0
- 関連項目:
setEnableControlFlow(boolean),setForceRandomValue(Long)
-
withControlFlow
public static BeMusicLoadHandler withControlFlow(long fixedValue)
CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。当メソッドを使用して生成したハンドラではCONTROL FLOWが有効になり #RANDOMの値は指定された固定値になります。
- パラメータ:
fixedValue- 強制する乱数の値- 戻り値:
- CONTROL FLOWを有効にしたBe-Music用BMSコンテンツ読み込みハンドラ
- 導入されたバージョン:
- 0.9.0
- 関連項目:
setEnableControlFlow(boolean),setForceRandomValue(Long)
-
withoutControlFlow
public static BeMusicLoadHandler withoutControlFlow()
CONTROL FLOWを無効にしたBe-Music用BMSコンテンツ読み込みハンドラを生成して返します。当メソッドを使用して生成したハンドラではCONTROL FLOWが有効になります。
- 戻り値:
- CONTROL FLOWを無効にしたBe-Music用BMSコンテンツ読み込みハンドラ
- 導入されたバージョン:
- 0.9.0
- 関連項目:
setEnableControlFlow(boolean),setForceRandomValue(Long)
-
-