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

SimpleScene (ネイティブクラス)


このクラスは基本的なシーンを扱うクラスです。

シーンクラスはFGES With FGLにおいてベースとなる動作を決定するクラスで、
実行中のシーンが全て終了するとプロセスが終了します。

このクラスはシーンクラスとして扱うのに必要最低限の機能だけが実装され、追加的な機能は一切持っていません。
このクラスはC++レベルでも基本クラスであり、他のシーンクラスもこのクラスの実体をC++レベルで使用します。

●継承

   このクラスは継承をしていません。

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

   implements INativeScene
          (C++レベルキャスト)IFGESScene
          SetDebugSceneClass
          GetDebugSceneClass
          SetMouseFocusChangeEnable
          GetMouseFocusChangeEnable
          FreezeView
          UnFreezeView
          SetViewFreezeLevel
          GetViewFreezeLevel
          SetFocusLock
          ReleaseFocusLock
          ReserveSE
          ReserveSceneDebugger
          ReserveScriptDebugger
          ReserveSyncView
          SilentUpdateView
          ViewSnapShot
          GetFocusChangeInfo
          IsSceneTransitionBusy
          GetWindowFromPoint


●クラスメソッド

   このクラスはクラスメソッドを持っていません。

●クラスメンバメソッド

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

●クラス共有変数

名前概要
readableconst FOCUSCHANGE_NONEフォーカス変更なし
readableconst FOCUSCHANGE_NATIVE「マウスによるフォーカス変更」によるフォーカス変更
readableconst FOCUSCHANGE_SCRIPTスクリプトによるフォーカス変更

●インスタンス変数

   このクラスはインスタンス変数を持っていません。


●C++レベル追加情報

クラスID: FGES_CLASSID_SIMPLESCENE
クラス名: FGESScene<IFGL_FGESScene>



SimpleScene::INativeScene@@SetDebugSceneClass

void INativeScene@@SetDebugSceneClass( INativeClass class_obj)

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

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

先頭へ


SimpleScene::INativeScene@@GetDebugSceneClass

readonly INativeClass?@ INativeScene@@GetDebugSceneClass()const

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

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

先頭へ


SimpleScene::INativeScene@@SetMouseFocusChangeEnable

void INativeScene@@SetMouseFocusChangeEnable( INativeBool new_mode)

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

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

先頭へ


SimpleScene::INativeScene@@GetMouseFocusChangeEnable

Bool INativeScene@@GetMouseFocusChangeEnable()const

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

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

先頭へ


SimpleScene::INativeScene@@FreezeView

Bool INativeScene@@FreezeView()

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

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

先頭へ


SimpleScene::INativeScene@@UnFreezeView

Bool INativeScene@@UnFreezeView()

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

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

先頭へ


SimpleScene::INativeScene@@SetViewFreezeLevel

void INativeScene@@SetViewFreezeLevel( INativeInteger new_lv)

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

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

先頭へ


SimpleScene::INativeScene@@GetViewFreezeLevel

Integer INativeScene@@GetViewFreezeLevel()const

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

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

先頭へ


SimpleScene::INativeScene@@SetFocusLock

Bool INativeScene@@SetFocusLock( INativeWindow lockwnd)

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

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

先頭へ


SimpleScene::INativeScene@@ReleaseFocusLock

Bool INativeScene@@ReleaseFocusLock()

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

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

先頭へ


SimpleScene::INativeScene@@ReserveSE

Bool INativeScene@@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として扱います。

先頭へ


SimpleScene::INativeScene@@ReserveSceneDebugger

void INativeScene@@ReserveSceneDebugger()

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


SimpleScene::INativeScene@@ReserveScriptDebugger

void INativeScene@@ReserveScriptDebugger()

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


SimpleScene::INativeScene@@ReserveSyncView

void INativeScene@@ReserveSyncView()

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


SimpleScene::INativeScene@@SilentUpdateView

Bool INativeScene@@SilentUpdateView()

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

先頭へ


SimpleScene::INativeScene@@ViewSnapShot

void INativeScene@@ViewSnapShot(editable Bitmap out_bitmap)const

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

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

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

先頭へ


SimpleScene::INativeScene@@GetFocusChangeInfo

Integer INativeScene@@GetFocusChangeInfo()const

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

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


SimpleScene::INativeScene@@IsSceneTransitionBusy

Bool INativeScene@@IsSceneTransitionBusy()const

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


SimpleScene::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取得対象のウィンドウに所属するウィンドウも再帰的に検索します。

先頭へ


SimpleScene::SetBeginMethod

public void SetBeginMethod( INativeMethod method_obj)

   シーン開始時に呼び出されるハンドラを設定します。
   ハンドラは戻り値、引数ともになく、開始されるシーンオブジェクトをホストとして呼び出されます。
   
   ハンドラはゲームシステムスレッドで呼び出されます。
   時間の掛かる処理をする場合は別スレッドに処理を移してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetUpdateMethod

public void SetUpdateMethod( INativeMethod method_obj)

   フレーム更新時に呼び出されるハンドラを設定します。
   ハンドラは戻り値、引数ともになく、現在のシーンオブジェクトをホストとして呼び出されます。

   ハンドラはゲームシステムスレッドで呼び出されます。
   時間の掛かる処理をする場合は別スレッドに処理を移してください。
   特にこのハンドラは頻繁に呼び出されるため、処理落ちに注意してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetEndMethod

public void SetEndMethod( INativeMethod method_obj)

   シーン終了直前に呼び出されるハンドラを設定します。
   ハンドラは戻り値、引数ともになく、終了されるシーンオブジェクトをホストとして呼び出されます。
   
   ハンドラはゲームシステムスレッドで呼び出されます。
   時間の掛かる処理をする場合は別スレッドに処理を移してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetSaveMethod

public void SetSaveMethod( INativeMethod method_obj)

   ベースシーンをセーブするために呼び出されるハンドラを設定します。
   ハンドラは以下の形で定義されていなければいけません。
method void Save(editable DataStoreWriter writer)
   引数はセーブ対象のファイルが開かれた状態で渡されます。
   ベースシーンオブジェクトをホストとして呼び出されます。
   
   このハンドラは GameSystem::SystemSave の処理中に、
   ベースシーンオブジェクトに設定されたハンドラが呼び出されます。
   
   ベースシーンは実行中のシーンの中で一番下にあるシーン、
   つまり終了するとプロセスが終了するシーンのことです。
   
   ハンドラはゲームシステムスレッドで呼び出されます。
   データを正しくセーブするため、このハンドラ内で処理を完了してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetLoadMethod

public void SetLoadMethod( INativeMethod method_obj)

   ベースシーンをロードするために呼び出されるハンドラを設定します。
   ハンドラは以下の形で定義されていなければいけません。
method void Load( DataStoreReader reader)
   引数はロード対象のファイルが開かれた状態で渡されます。
   ベースシーンオブジェクトをホストとして呼び出されます。
   
   このハンドラはシステムロードの処理中に、
   システムセーブ時のベースシーンクラスがインスタンス化された後、
   ベースシーンオブジェクトに設定されたハンドラが呼び出されます。
   そのため、このハンドラはシーンクラスのイニシャライザ中で設定しなければいけません。
   
   ベースシーンは実行中のシーンの中で一番下にあるシーン、
   つまり終了するとプロセスが終了するシーンのことです。
   
   ハンドラはゲームシステムスレッドで呼び出されます。
   データを正しくロードするため、このハンドラ内で処理を完了してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetResizeMethod

public void SetResizeMethod( INativeMethod method_obj)

   仮想画面の大きさが変更された時に呼び出されるハンドラを設定します。
   ハンドラは戻り値、引数ともになく、現在のシーンオブジェクトをホストとして呼び出されます。
   
   呼び出したシーンの実行中に仮想画面の大きさが変更された場合、
   このハンドラはシーンの実行が再開されてから呼び出されます。
   
   ハンドラはゲームシステムスレッドで呼び出されます。
   時間の掛かる処理をする場合は別スレッドに処理を移してください。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetIdleMethod

public void SetIdleMethod( INativeMethod method_obj)

   ゲームタスクがない時に呼び出されるハンドラを設定します。
   ハンドラは戻り値、引数ともになく、現在のシーンオブジェクトをホストとして呼び出されます。
   
   このハンドラはゲームシステムスレッド、ゲームメインスレッドの両方にタスクがない時呼び出されます。
   
   このハンドラはゲームメインスレッドで呼び出されます。

INativeMethod method_obj :設定するハンドラ

先頭へ


SimpleScene::SetDebugSceneClass

public void SetDebugSceneClass( INativeClass class_obj)

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

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

先頭へ


SimpleScene::GetDebugSceneClass

public readonly INativeClass?@ GetDebugSceneClass()const

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

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

先頭へ


SimpleScene::SetMouseFocusChangeEnable

public void SetMouseFocusChangeEnable( INativeBool new_mode)

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

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

先頭へ


SimpleScene::GetMouseFocusChangeEnable

public Bool GetMouseFocusChangeEnable()const

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

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

先頭へ


SimpleScene::FreezeView

public Bool FreezeView()

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

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

先頭へ


SimpleScene::UnFreezeView

public Bool UnFreezeView()

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

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

先頭へ


SimpleScene::SetViewFreezeLevel

public void SetViewFreezeLevel( INativeInteger new_lv)

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

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

先頭へ


SimpleScene::GetViewFreezeLevel

public Integer GetViewFreezeLevel()const

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

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

先頭へ


SimpleScene::SetFocusLock

public Bool SetFocusLock( INativeWindow lockwnd)

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

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

先頭へ


SimpleScene::ReleaseFocusLock

public Bool ReleaseFocusLock()

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

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

先頭へ


SimpleScene::ReserveSE

public 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として扱います。

先頭へ


SimpleScene::ReserveSceneDebugger

public void ReserveSceneDebugger()

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


SimpleScene::ReserveScriptDebugger

public void ReserveScriptDebugger()

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


SimpleScene::ReserveSyncView

public void ReserveSyncView()

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


SimpleScene::SilentUpdateView

public Bool SilentUpdateView()

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

先頭へ


SimpleScene::ViewSnapShot

public void ViewSnapShot(editable Bitmap out_bitmap)const

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

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

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

先頭へ


SimpleScene::SetDebugSceneInfo

public void SetDebugSceneInfo( INativeString info)

   非デバッグモード実行時に例外が発生した時、
   errorlog.txt に書き込まれるシーン情報を設定します。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは空文字列が設定されています。

INativeString info :設定するシーン情報。

先頭へ


SimpleScene::GetDebugSceneInfo

public String GetDebugSceneInfo()const

   非デバッグモード実行時に例外が発生した時、
   errorlog.txt に書き込まれるシーン情報を取得します。
   
   この設定はシーン単位で行われます。
   設定したシーン以外での設定には影響しません。
   デフォルトでは空文字列が設定されています。

戻り値:設定されているシーン情報。

先頭へ


SimpleScene::GetFocusChangeInfo

public Integer GetFocusChangeInfo()const

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

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


SimpleScene::IsSceneTransitionBusy

public Bool IsSceneTransitionBusy()const

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


SimpleScene::GetWindowFromPoint

public INativeWindow?@ 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取得対象のウィンドウに所属するウィンドウも再帰的に検索します。

先頭へ


SimpleScene::FOCUSCHANGE_NONE

readable readonly Integer FOCUSCHANGE_NONE

   最終入力更新後にフォーカスが変更されていないことを示す識別子。
   
先頭へ


SimpleScene::FOCUSCHANGE_NATIVE

readable readonly Integer FOCUSCHANGE_NATIVE

   最終入力更新時に「マウスによるフォーカス変更」が行われたことを示す識別子。
   
先頭へ


SimpleScene::FOCUSCHANGE_SCRIPT

readable readonly Integer FOCUSCHANGE_SCRIPT

   最終入力更新後にスクリプトによるフォーカス変更が行われたことを示す識別子。
   
先頭へ


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

最終更新 2020/06/14