[前へ] [目次へ] [次へ]

INativeScene (ネイティブインターフェイス)


このインターフェイスはシーンクラスを扱うインターフェイスです。

FGES上でシーンクラスを実装する場合、
このインターフェイスをサポートするネイティブシーンクラスを内包継承しなければいけません。

●実装している標準クラス

   SimpleScene
   FittingScene
   TileMapEventScene


●インターフェイスメソッド

名前概要
設定メソッド SetDebugSceneClassデバッグシーンクラスを設定します
取得メソッドconst GetDebugSceneClassデバッグシーンクラスを取得します
設定メソッド SetMouseFocusChangeEnableマウスによるフォーカス変更の有無を設定します
取得メソッドconst GetMouseFocusChangeEnableマウスによるフォーカス変更の有無を取得します
操作メソッド FreezeView画面凍結レベルを1上げます
操作メソッド UnFreezeView画面凍結レベルを1下げます
設定メソッド SetViewFreezeLevel画面凍結レベルを設定します
取得メソッドconst GetViewFreezeLevel画面凍結レベルを取得します
操作メソッド SetFocusLockフォーカスの変更を制限します
操作メソッド ReleaseFocusLockフォーカスの変更を制限を解除します
操作メソッド ReserveSE指定時間後に再生するSEを予約します
操作メソッド ReserveSceneDebuggerシーンデバッガの呼び出しを予約します
操作メソッド ReserveScriptDebuggerスクリプトデバッガの呼び出しを予約します
操作メソッド ReserveSyncView仮想画面の画面反映を予約します
操作メソッド SilentUpdateView実画面に反映せずに仮想画面を更新します
取得メソッドconst ViewSnapShot仮想画面のコピーを作成します
取得メソッドconst GetFocusChangeInfoフォーカスの変更時情報を取得します
取得メソッドconst IsSceneTransitionBusyシーン遷移処理中か取得します
取得メソッドconst GetWindowFromPoint指定座標にあるウィンドウを取得します

●ネイティブインターフェイス

   このインターフェイスはネイティブインターフェイスを持っていません。

●ネイティブキャスト(C++レベルでのキャスト)

   IFGESScene

●C++レベル追加情報

インターフェイスID: FGES_IFID_SCENE



INativeScene@@SetDebugSceneClass

void SetDebugSceneClass( INativeClass class_obj)

   シーンの実行中にF11キーを押した時に起動するシーンクラスを設定します。
   この方法で起動されるシーンはスクリプト定義のシーンデバッガとして扱われ、
   現在実行中のシーンのスレッドを全て一時停止して割り込み呼び出しします。

INativeClass class_obj :設定するシーンクラスオブジェクト

先頭へ


INativeScene@@GetDebugSceneClass

readonly INativeClass?@ GetDebugSceneClass()const

   シーンの実行中にF11キーを押した時に起動するシーンクラスを取得します。
   この方法で起動されるシーンはスクリプト定義のシーンデバッガとして扱われ、
   現在実行中のシーンのスレッドを全て一時停止して割り込み呼び出しします。

戻り値:設定されているシーンクラスオブジェクト。
      シーンクラスが設定されていない場合は空参照を返します。

先頭へ


INativeScene@@SetMouseFocusChangeEnable

void SetMouseFocusChangeEnable( INativeBool new_mode)

   マウスでクリックを行った時、
   該当する位置のウィンドウに入力フォーカスを自動的に変更するかを設定します。
   
   この設定が真に設定されている場合、マウスでクリックした時に
   クリックした座標に対応するウィンドウがあるか自動的にチェックし、
   ウィンドウがあった場合はそのウィンドウに対して入力フォーカスを設定します。
   C++レベルで作成されているウィンドウに入力フォーカスを設定できるのはこの方法だけです。
   
   この設定が偽に設定されている場合、入力フォーカスはスクリプトで操作した場合のみ変化します。
   この場合、C++レベルで作成されているウィンドウを操作することはできません。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは偽に設定されています。

INativeBool new_mode :真を指定するとマウスによるフォーカス変更を有効にします。

先頭へ


INativeScene@@GetMouseFocusChangeEnable

Bool GetMouseFocusChangeEnable()const

   マウスでクリックを行った時、
   該当する位置のウィンドウに入力フォーカスを自動的に変更するかを取得します。
   
   この設定が真に設定されている場合、マウスでクリックした時に
   クリックした座標に対応するウィンドウがあるか自動的にチェックし、
   ウィンドウがあった場合はそのウィンドウに対して入力フォーカスを設定します。
   C++レベルで作成されているウィンドウに入力フォーカスを設定できるのはこの方法だけです。
   
   この設定が偽に設定されている場合、入力フォーカスはスクリプトで操作した場合のみ変化します。
   この場合、C++レベルで作成されているウィンドウを操作することはできません。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは偽に設定されています。

戻り値:マウスによるフォーカス変更が有効な場合真を返します。

先頭へ


INativeScene@@FreezeView

Bool FreezeView()

   画面凍結レベルを1上げます。
   画面凍結レベルを1以上にするとその瞬間の状態で画面の更新が停止します。
   ただし、画面に反映されていないだけで全ての動作は続行されています。
   
   この設定は時間の掛かる画面構築処理など、
   処理途中の状態が画面に反映されることが都合の悪い時に使用します。
   解除を忘れるとフリーズしたように見えるので注意してください。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは1に設定されています。

戻り値:操作に成功すると真を返します。

先頭へ


INativeScene@@UnFreezeView

Bool UnFreezeView()

   画面凍結レベルを1下げます。
   このメソッドは現在の画面凍結レベルが0である場合失敗します。
   
   画面凍結レベルを1以上にするとその瞬間の状態で画面の更新が停止します。
   ただし、画面に反映されていないだけで全ての動作は続行されています。
   
   この設定は時間の掛かる画面構築処理など、
   処理途中の状態が画面に反映されることが都合の悪い時に使用します。
   解除を忘れるとフリーズしたように見えるので注意してください。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは1に設定されています。

戻り値:操作に成功すると真を返します。

先頭へ


INativeScene@@SetViewFreezeLevel

void SetViewFreezeLevel( INativeInteger new_lv)

   画面凍結レベルを設定します。
   画面凍結レベルを1以上にするとその瞬間の状態で画面の更新が停止します。
   ただし、画面に反映されていないだけで全ての動作は続行されています。
   
   この設定は時間の掛かる画面構築処理など、
   処理途中の状態が画面に反映されることが都合の悪い時に使用します。
   解除を忘れるとフリーズしたように見えるので注意してください。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは1に設定されています。

INativeInteger new_lv :設定する画面凍結レベル。

先頭へ


INativeScene@@GetViewFreezeLevel

Integer GetViewFreezeLevel()const

   画面凍結レベルを取得します。
   画面凍結レベルを1以上にするとその瞬間の状態で画面の更新が停止します。
   ただし、画面に反映されていないだけで全ての動作は続行されています。
   
   この設定は時間の掛かる画面構築処理など、
   処理途中の状態が画面に反映されることが都合の悪い時に使用します。
   解除を忘れるとフリーズしたように見えるので注意してください。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは1に設定されています。

戻り値:現在の画面凍結レベルを返します。

先頭へ


INativeScene@@SetFocusLock

Bool SetFocusLock( INativeWindow lockwnd)

   ウィンドウの入力フォーカスの変更を指定したウィンドウとそのウィンドウに所属するウィンドウに制限します。
   フォーカスの変更をロックしている間、
   ロックしているウィンドウとそのウィンドウに所属するウィンドウ以外へのフォーカス設定は無視されます。
   
   このメソッドを呼び出した時点で入力フォーカスを持っていたウィンドウが
   ロックしているウィンドウまたはそのウィンドウに所属するウィンドウでない場合でも入力フォーカスが変更されることはありませんが、
   一度入力フォーカスを失うとロックが変更されるか、解除されなければフォーカスを獲得できなくなります。
   
   ロックの必要が無くなったら ReleaseFocusLock メソッドでロックを解除してください。
   ロックしている状態でさらにこのメソッドを呼び出すと、
   ロック状態は最後に設定したウィンドウのものになりますが、
   ロックを解除すると以前のロック状態が復元されます。
   完全にロックを解除するにはロックした回数だけ ReleaseFocusLock メソッドでロックを解除する必要があります。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   
戻り値:ロックに成功すると真を返します。

INativeWindow lockwnd :ロックするウィンドウを指定します。

先頭へ


INativeScene@@ReleaseFocusLock

Bool ReleaseFocusLock()

   現在設定されているウィンドウの入力フォーカスへのロックを一段解除します。
   多重にロックされている場合は最後に掛けたロックが解除され、
   最後にロックした時点のロック状態が復元されます。
   
   ロックしていない状態でこのメソッドを呼び出した場合は失敗します。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。

戻り値:ロックの解除に成功すると真を返します。

先頭へ


INativeScene@@ReserveSE

Bool ReserveSE( INativeInteger wait_frame, INativeString filename,
             INativeFloat? volume=NULL, INativeFloat? speed=NULL, INativeInteger? pan=NULL)


   指定フレーム数の経過後に再生する効果音を予約します。
   フレーム数はこのシーンにおけるネイティブフレーム基準で計測されます。
   ゲームシステムスレッドの処理によってネイティブフレームがスキップされた場合や、
   他のシーンを呼び出したことによってシーンの処理が中断していた場合、再生までの時間が延長されます。
   
   このメソッドは指定されたタイミングに同じ設定の効果音が予約されている場合、何もせずに偽を返します。
   
   再生時にメモリ上にロードされていない効果音が指定された場合、自動的にロードしてから再生します。
   
   ファイル名の先頭に # を指定した場合、「排他再生フラグ」として扱われ、 # を除いた部分をファイル名として使用します。
   排他再生を行う場合、同じ効果音が再生中だった場合に再生を中止してから改めて再生します。
   排他再生しない場合、同じ効果音が再生中でも多重して再生されます。
   
   このメソッドでは Wav/MP3/Ogg Vorbis のファイルを再生することができますが、
   MP3ファイルのデコードはOSの機能を使用するため、PCによっては失敗する可能性があります。
   
   ミキシング処理を高速に行うため、全ての効果音ファイルは44100Hzのモノラルか、ステレオでなければいけません。
   また、ミキシング時に音割れの原因になるため、効果音ファイルの音量はある程度小さめにすべきです。
   
戻り値:新しく予約された場合真を返します。

INativeInteger wait_frame :再生までのフレーム数を指定します。
INativeString filename :再生する効果音ファイル名。SEフォルダ基準で、パスは使えません。
         ファイル名の先頭に # がある場合、 # を除いた部分をファイル名として使用し排他再生します。
INativeFloat? volume=NULL :再生音量を%単位で指定します。
         空参照を指定すると100.0(100%)として扱います。
INativeFloat? speed=NULL :再生速度を%単位で指定します。
         空参照を指定すると100.0(100%)として扱います。
INativeInteger? pan=NULL :パンを-64〜64で指定します。中央は0です。
         空参照を指定すると0として扱います。

先頭へ


INativeScene@@ReserveSceneDebugger

void ReserveSceneDebugger()

   シーンデバッガの呼び出しを予約します。
   予約したシーンデバッガはこのシーンオブジェクトのフレーム開始時に最優先レベルで割り込みます。
   ただし、スクリプトデバッガの呼び出しも予約されている場合はスクリプトデバッガが優先されます。
   
   現在実行中のシーンに対して予約した場合、
   シーンデバッガが呼び出されるのは次のフレームの開始時になります。
   予約したフレームの処理は最後まで実行されます。
   
   このメソッドは例えば、呼び出されているシーンから呼び出し元のシーンに戻る時、
   呼び出し元のシーンのシーンデバッガを呼び出したいといった用途が想定されています。
   
   この予約はゲームシステムスレッドの実行よりも優先されるため、
   呼び出し元のシーンに対して予約すると呼び出し元に戻った瞬間にデバッガが呼び出されます。
   
先頭へ


INativeScene@@ReserveScriptDebugger

void ReserveScriptDebugger()

   スクリプトデバッガの呼び出しを予約します。
   予約したスクリプトデバッガはこのシーンオブジェクトのフレーム開始時に最優先レベルで割り込みます。
   
   現在実行中のシーンに対して予約した場合、
   スクリプトデバッガが呼び出されるのは次のフレームの開始時になります。
   予約したフレームの処理は最後まで実行されます。
   直ちにスクリプトデバッガを呼び出したい場合は debug_break 文を使用します。
   
   このメソッドは例えば、呼び出されているシーンから呼び出し元のシーンに戻る時、
   呼び出し元のシーンの状態でスクリプトデバッガを呼び出したいといった用途が想定されています。
   
   この予約はゲームシステムスレッドの実行よりも優先されるため、
   呼び出し元のシーンに対して予約すると呼び出し元に戻った瞬間にデバッガが呼び出されます。
   
先頭へ


INativeScene@@ReserveSyncView

void ReserveSyncView()

   仮想画面の画面反映を予約します。
   このメソッドにより予約された画面反映は処理落ちによる描画スキップ処理や画面凍結状態に係わらず、
   実行したフレームで確実に行います。
   
先頭へ


INativeScene@@SilentUpdateView

Bool SilentUpdateView()

   実画面に反映せずに仮想画面を直ちに更新します。
   このメソッドを呼び出してもプレイヤーから見える画面は変化しませんが、
   内部的に画面が更新され、 GameSystem::ViewSnapShot で取得できる画面は更新されます。
   
   このメソッドによって仮想画面を更新した場合、次に画面に変化があるまで実画面には反映されません。
   
戻り値:この呼び出しで画面に変化があった場合、真を返します。

先頭へ


INativeScene@@ViewSnapShot

void ViewSnapShot(editable Bitmap out_bitmap)const

   仮想画面の色と透過度を指定したビットマップ画像にコピーします。
   指定するビットマップオブジェクトにはあらかじめ仮想画面と同じ大きさのビットマップ画像を作成しておく必要があります。

   このメソッドはこのシーンオブジェクトが最後に描画更新を行った時の仮想画面を取得します。

editable Bitmap out_bitmap :[出力]仮想画面をコピーするオブジェクト。

先頭へ


INativeScene@@GetFocusChangeInfo

Integer GetFocusChangeInfo()const

   最後にこのシーンで入力が更新されてから、このシーンで行ったフォーカス変更の種類を取得します。
   このメソッドはフォーカス変更時に連鎖反応を防ぐために使用できます。
   
   識別子 SimpleScene::FOCUSCHANGE_NONE は偽で他は真になります。
   フォーカス変更の発生のみを検出する場合は真偽値評価で十分です。

戻り値:最終入力更新後に行われたフォーカス変更の種類を返します。以下のいずれか。
識別子意味
SimpleScene::FOCUSCHANGE_NONE最終入力更新後にフォーカスは変化していません。
SimpleScene::FOCUSCHANGE_NATIVE最終入力更新時に「マウスによるフォーカス変更」が行われました。
SimpleScene::FOCUSCHANGE_SCRIPT最終入力更新後にスクリプトによるフォーカス変更が行われました。
   
先頭へ


INativeScene@@IsSceneTransitionBusy

Bool IsSceneTransitionBusy()const

   このシーンがシーン遷移処理中かを返します。
   
戻り値:このシーンがシーン遷移処理中なら真を返します。
   
先頭へ


INativeScene@@GetWindowFromPoint

INativeWindow?@ INativeScene@@GetWindowFromPoint(
             INativeInteger x, INativeInteger y, INativeInteger? option=NULL)const


   指定した座標にあるウィンドウのうち、列挙可能な最も上にあるウィンドウを返します。
   デフォルトではトップレベルウィンドウのみが取得対象になります。
   トップレベルウィンドウに所属するウィンドウも取得対象にするには WFP_RECURSIVE オプションを使用します。
   
戻り値:指定した座標にあるウィンドウのうち、列挙可能な最も上にあるウィンドウを返します。
      該当するウィンドウが存在しない場合、空参照を返します。

INativeInteger x :ウィンドウを取得するX座標。
INativeInteger y :ウィンドウを取得するY座標。
INativeInteger? option=NULL :取得対象のウィンドウを決定するオプション。以下のOR結合。
識別名内容
Window::WFP_TYPE_STACKスタックウィンドウを取得対象にします。
Window::WFP_TYPE_SUBサブウィンドウを取得対象にします。
Window::WFP_TYPE_CHILD子ウィンドウを取得対象にします。
Window::WFP_TYPE_ALL全てのウィンドウを取得対象にします。(デフォルト)
Window::WFP_FEX_UPDATE_OFF更新停止しているウィンドウを対象から除外します。
Window::WFP_FEX_INPUT_OFF入力停止しているウィンドウを対象から除外します。
Window::WFP_FEX_INVISIBLE非表示のウィンドウを対象から除外します。
Window::WFP_FEX_ALV0透過度が0のウィンドウを対象から除外します。
Window::WFP_RECURSIVE取得対象のウィンドウに所属するウィンドウも再帰的に検索します。

先頭へ


[前へ] [目次へ] [次へ]

最終更新 2020/06/14