パッケージ com.lmt.lib.bms.bemusic

クラス BeMusicLoadHandler

    • コンストラクタの詳細

      • BeMusicLoadHandler

        public BeMusicLoadHandler()
    • メソッドの詳細

      • setIgnoreUnkonwnMeta

        public final BeMusicLoadHandler setIgnoreUnkonwnMeta​(boolean isIgnore)
        不明なメタ情報を無視するかどうかを設定します。

        無視すると、BMS解析はエラーにならず不明メタ情報を読み飛ばして解析を続行するようになります。

        パラメータ:
        isIgnore - 不明メタ情報を無視するかどうか
        戻り値:
        このオブジェクトのインスタンス
      • setIgnoreUnknownChannel

        public final BeMusicLoadHandler setIgnoreUnknownChannel​(boolean isIgnore)
        不明なチャンネルを無視するかどうかを設定します。

        無視すると、BMS解析はエラーにならず不明チャンネルを読み飛ばして解析を続行するようになります。

        パラメータ:
        isIgnore - 不明チャンネルを無視するかどうか
        戻り値:
        このオブジェクトのインスタンス
      • setIgnoreWrongData

        public final BeMusicLoadHandler setIgnoreWrongData​(boolean isIgnore)
        不正なデータを無視するかどうかを設定します。

        無視すると、BMS解析はエラーにならず不正データ定義のあったメタ情報・チャンネルを読み飛ばして解析を 続行するようになります。

        パラメータ:
        isIgnore - 不正データを無視するかどうか
        戻り値:
        このオブジェクトのインスタンス
      • 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 - 強制する乱数の値
        戻り値:
        このオブジェクトのインスタンス
      • createContent

        public BmsContent createContent​(BmsSpec spec)
        BMSコンテンツオブジェクトを生成します。

        BmsLoaderを通して指定されたソースから解析された各種情報は当メソッドが返したBMSコンテンツオブジェクトに格納されます。 BMSの読み込みが正常に完了した場合、BmsLoader.load(java.io.File)からは当メソッドから返されたオブジェクトの参照を返却します。

        BMSコンテンツに指定するBMS仕様は、パラメータで渡されるオブジェクトを渡してください。例えBMS仕様が全く同じであったとしても、 パラメータで渡されたオブジェクト以外を渡したBMSコンテンツを返した場合、BmsLoader.load(java.io.File)の以後の処理でエラーとなり 読み込み失敗となります。

        定義:
        createContent インタフェース内 BmsContent.Creator
        定義:
        createContent インタフェース内 BmsLoadHandler
        パラメータ:
        spec - BMS仕様
        戻り値:
        BMSコンテンツオブジェクト
      • startLoad

        public void startLoad​(BmsSpec spec)
        BmsLoader.load(java.io.File)にてBMSの読み込み処理が開始された時に一度だけ呼び出されます。

        当メソッドは1個のBMSの読み込みが開始される度に、アプリケーション固有の何らかの初期化処理を行いたい場合を想定して 用意されています。そのような事情が無い場合は何も行う必要はありません。

        当メソッドで例外がスローすると、後の処理で呼ばれるBmsLoadHandler.finishLoad(com.lmt.lib.bms.BmsContent)は呼ばれず、スローされた例外を内包した BmsExceptionがスローされます。

        定義:
        startLoad インタフェース内 BmsLoadHandler
        パラメータ:
        spec - BMSの読み込みに参照するBMS仕様(NOT null保証)
      • finishLoad

        public boolean finishLoad​(BmsContent content)
        BmsLoader.load(java.io.File)にてBMSの読み込み処理が完了した時に一度だけ呼び出されます。

        アプリケーションは、当メソッドのパラメータで渡されるBMSコンテンツを参照することで、独自の観点でBMSコンテンツの読み込み結果 についての検査を行うことができます。読み込まれたBMSコンテンツが当該アプリケーションの仕様にそぐわない内容であると判定し、 エラーとして結果を破棄したい場合は当メソッドの戻り値をfalseで返してください。そうするとBmsLoader.load(java.io.File)BmsAbortExceptionをスローします。エラー種別はBmsLoadError.Kind.FAILED_TEST_CONTENT として報告されます。

        BmsLoadHandlerのメソッド内で例外をスローした場合、当メソッドは呼び出されず、スローされた例外を内包した BmsExceptionがスローされます。

        当メソッドで例外をスローした場合、当該例外を内包したBmsExceptionがスローされます。

        定義:
        finishLoad インタフェース内 BmsLoadHandler
        パラメータ:
        content - BMS読み込みが完了し、完成されたBMSコンテンツオブジェクト
        戻り値:
        trueを返すとBMS読み込み処理を正常終了、falseを返すと異常終了と判定します。
      • parseError

        public boolean parseError​(BmsLoadError error)
        BMS読み込み中にソース解析エラーが発生した場合に呼び出されます。

        アプリケーションは当メソッドのパラメータを参照することでエラー情報にアクセスすることができます。また、エラーを無視して解析を 続行するかどうかをメソッドの戻り値で制御することができます。但し、解析エラーはBMSライブラリ、および(もしかしたら)アプリケーションが BMSコンテンツをBMS仕様に従って適正に読み込めないと判断した時に発生させるものであるため、基本的にはエラーを無視することは あまり推奨されません。

        発生するエラーの種類についてはBmsLoadError.Kindを参照してください。

        当メソッドでfalseを返し、エラーを無視しない場合はBmsLoader.load(java.io.File)BmsAbortException例外を スローし、生成中のBMSコンテンツは破棄します。デフォルトの動作では解析エラーは無視しません。

        当メソッドで例外をスローした場合、当該例外を内包したBmsExceptionがスローされます。

        定義:
        parseError インタフェース内 BmsLoadHandler
        パラメータ:
        error - エラー情報
        戻り値:
        falseを返すと、読み込み続行不可としてBMS読み込みを停止します。
        関連項目:
        BmsLoadError.Kind
      • testMeta

        public BmsLoadHandler.TestResult testMeta​(BmsMeta meta,
                                                  int index,
                                                  Object value)
        1個のメタ情報を解析した時に呼び出されます。

        当メソッドが呼び出される契機は、BMS仕様に定義のあるメタ情報の解析が正常に行われた後です。デフォルトの動作では、 BMS仕様に準拠したメタ情報は全てBMSコンテンツ内に記録されます。アプリケーションが個々のメタ情報に対して固有の検査を行う必要が ある場合は当メソッドで検査処理を実装してください。

        解析されたメタ情報の検査結果は戻り値でBMSローダに報告します。

        BMS仕様に無いメタ情報を検出しても当メソッドは呼び出されず、直接BmsLoadHandler.parseError(com.lmt.lib.bms.BmsLoadError)が呼び出されます。

        当メソッドで例外をスローした場合、当該例外を内包したBmsExceptionがスローされます。

        定義:
        testMeta インタフェース内 BmsLoadHandler
        パラメータ:
        meta - メタ情報
        index - インデックス
        value - 解析後の値。データ型は当該メタ情報のデータ型に依存します。
        戻り値:
        BmsLoadHandler.TestResult参照
        関連項目:
        BmsMeta, BmsType, BmsLoadHandler.TestResult
      • testChannel

        public BmsLoadHandler.TestResult testChannel​(BmsChannel channel,
                                                     int index,
                                                     int measure,
                                                     Object value)
        1個のチャンネルデータを解析した時に呼び出されます。

        当メソッドが呼び出される契機は、BMS仕様に定義のあるチャンネルが正常に解析された後です。デフォルトの動作では BMS仕様に準拠したチャンネルデータは全てBMSコンテンツ内に記録されます。アプリケーションが個々のチャンネルデータに対して 固有の検査を行う必要がある場合は当メソッドで検査処理を実装してください。

        解析されたチャンネルデータの検査結果は戻り値でBMSローダに報告します。

        BMS仕様に無いチャンネルを検出しても当メソッドは呼び出されず、直接BmsLoadHandler.parseError(com.lmt.lib.bms.BmsLoadError)が呼び出されます。

        当メソッドで例外をスローした場合、当該例外を内包したBmsExceptionがスローされます。

        定義:
        testChannel インタフェース内 BmsLoadHandler
        パラメータ:
        channel - チャンネル
        index - チャンネルインデックス
        measure - 小節番号
        value - チャンネルの値。データ型は当該チャンネルのデータ型に依存します。
        戻り値:
        BmsLoadHandler.TestResult参照
        関連項目:
        BmsChannel, BmsType, BmsLoadHandler.TestResult