XLuaの基礎6

開発のコツ:「On Error」でエラーメッセージを受け取る

コンパイル中やスクリプトの実行中にエラーが発生した場合、エラー状況がレポートされます。これをMMF2のイベントエディタからイベントとして受け取り、文字列を扱うオブジェクトで文字列として「ErrorString$( “XLua” )」を画面に表示することができます。開発者はエラー報告から得られた情報に基づいて具体的にエラーを起こしているファイルとファイル行・エラー内容などを知ります。

実行中のLuaスクリプト中に「print関数」が使われている場合、これもMMFではイベントの発生を条件とした「On Print」で値を受け取ることができます。「On Print」と「On Error」は同一のオブジェクトに表示させるよりも、別々のオブジェクトにそれぞれ専属で表示させた方がエラー確認やデバッグ作業の効率が良くなると思います。特にエラーが出たときはフレームに配置されたすべてのオブジェクトより一番前面に表示されないといけない(メッセージが隠れてしまったりしないように)ので、エラー報告の表示には「静的テキスト」の仕様も役に立ちます。しかしウィンドウサイズが「640×480」くらいの比較的大きめの画面ならともかく「240×340」などの小さなウィンドウサイズで作っているとメッセージを表示させてもほとんど読み取れません・・・というわけでエラーメッセージを受け取ったらテキストファイルに自動で保存しつつ、ついでにポップアップみたいにテキストエディタでエラー報告もさせてしまいましょう、というサンプルを作ってみました。

「On print」表示用の「文字列」オブジェクトはオブジェクトのプロパティから「グローバルオブジェクト」のオプションにチェックを入れて各フレームで使いまわしをするための準備をします(静的テキストにはグローバルオブジェクト化するためのオプションが無い)。次に「文字列」と「静的テキスト」にそれぞれ「オブジェクトイベント」を作成します。これは海外で「Widget」と呼ばれているやり方で、汎用的な処理をなるべく部品化してMMF2のアプリケーション内で処理を使いまわししましょうって試みです。本家にはこの手の「Widget」はいろんな種類がありますが、さすがにXLua用のエラーメッセージ表示用のWidgetとかは無かったので自分で作りました。さて、こうしておけばフレームにオブジェクトをコピーするだけで「On Error」や「On print」イベント発生時にはメッセージを表示できるようになります。サンプルファイルでは「バイナリオブジェクト」を利用して、受け取ったエラーメッセージを実行ファイルと同じ場所にテキストファイルとして保存させています。エディタは標準でNotepad.exeを指定してありますが、これは自分の好みのエディタに替えて使ってください。

必要なエクステンション

  1. Binary Object
  2. Surface
  3. XLua
array.dll_sample.zip

XLuaとSurfaceを用いたサンプル


>>次のページへ