クラス BeMusicLoadHandler
- Object
-
- BeMusicLoadHandler
-
- すべての実装されたインタフェース:
BmsContent.Creator
,BmsLoadHandler
,BmsNote.Creator
public class BeMusicLoadHandler extends Object implements BmsLoadHandler
BMS読み込み時のハンドラ
-
-
ネストされたクラスの概要
-
インタフェースから継承されたネストされたクラス/インタフェース BmsLoadHandler
BmsLoadHandler.TestResult
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BeMusicLoadHandler()
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 BmsContent
createContent(BmsSpec spec)
BMSコンテンツオブジェクトを生成します。boolean
finishLoad(BmsContent content)
BmsLoader.load(java.io.File)
にてBMSの読み込み処理が完了した時に一度だけ呼び出されます。boolean
parseError(BmsLoadError error)
BMS読み込み中にソース解析エラーが発生した場合に呼び出されます。BeMusicLoadHandler
setEnableControlFlow(boolean isEnable)
CONTROL FLOWの有効状態を設定します。BeMusicLoadHandler
setForceRandomValue(Long value)
CONTROL FLOWにおける乱数生成の値を強制します。BeMusicLoadHandler
setIgnoreUnknownChannel(boolean isIgnore)
不明なチャンネルを無視するかどうかを設定します。BeMusicLoadHandler
setIgnoreUnkonwnMeta(boolean isIgnore)
不明なメタ情報を無視するかどうかを設定します。BeMusicLoadHandler
setIgnoreWrongData(boolean isIgnore)
不正なデータを無視するかどうかを設定します。void
startLoad(BmsSpec spec)
BmsLoader.load(java.io.File)
にてBMSの読み込み処理が開始された時に一度だけ呼び出されます。BmsLoadHandler.TestResult
testChannel(BmsChannel channel, int index, int measure, Object value)
1個のチャンネルデータを解析した時に呼び出されます。BmsLoadHandler.TestResult
testMeta(BmsMeta meta, int index, Object value)
1個のメタ情報を解析した時に呼び出されます。-
クラスから継承されたメソッド Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
インタフェースから継承されたメソッド BmsLoadHandler
createNote, testDeclaration
-
-
-
-
メソッドの詳細
-
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
-
-