SophiaFramework UNIVERSE 5.3 |
レスポンダ空間をフルスクリーンモードにするには、 デバイス画面をフルスクリーンモードにしてから 描画エンジン(SFYRenderer)を初期化します。
以下は、レスポンダ空間をフルスクリーンモードにするコードです。
このコードでは、 USRApplication::USRApplication コンストラクタから呼び出す USRApplication::Initialize 関数内で、 SFBDisplay::SetPrefs 関数を呼び出してデバイス画面をフルスクリーンモードにしてから、 SFYRenderer::Initialize 関数を呼び出して描画エンジンを再初期化しています。
この操作により、 レスポンダ空間はフルスクリーンモードに設定されます。 これに伴い、SFYApplication クラスが内部に保持する ルート[SFZRoot]の再初期化も行っています。
全体のサンプルコードはこちら ( fullscreen_sfy2.zip: 41.5 KB)から入手できます。
描画エンジンとルートの再初期化 | |
---|---|
SFYApplication::SFYApplication コンストラクタでは、 デフォルトのスクリーンモードで描画エンジンとルートを初期化していますが、 下記の処理によりデフォルトの初期化は無効になります (参照: SFYApplication::SFYApplication コンストラクタの内部実装)。 |
例 9.51. レスポンダ空間をフルスクリーンモードにする方法
SFMTYPEDEFCLASS(USRApplication) class USRApplication : public SFYApplication { SFMSEALCOPY(USRApplication) public: static SFCInvokerPtr Factory (Void); protected: explicit USRApplication (Void) static_throws; virtual ~USRApplication (Void); private: SFCError Initialize (Void); // ... }; // アプリケーションクラスのコンストラクタ USRApplication::USRApplication(Void) static_throws { if (static_try()) { // フルスクリーンモードで描画エンジンとルートを再初期化する static_throw(Initialize()); } if (static_try()) { // その他、初期化処理を記述する // ... } } // フルスクリーンモードで描画エンジンとルートを再初期化する SFCError USRApplication::Initialize(Void) { SFXGraphicsPtr graphics; SFBDisplaySmp display; SFYRendererPtr _renderer; SFZRootSmp _root; SFCError error(SFERR_NO_ERROR); // SFXGraphics インスタンスを取得する if ((graphics = SFXGraphics::GetInstance()) != null) { // SFBDisplay インスタンスを取得する display = graphics->GetSFBDisplay(); // デバイス画面の設定を変更する: ピクト行を表示し、画面は最大(フルスクリーン)にする if ((error = display->SetPrefs("a:1,w:*,h:*")) == SFERR_NO_ERROR) { // クリッピング矩形領域をデフォルト(ターゲットビットマップ境界)にリセットする display->ResetClipRect(); // 描画エンジンを取得する if ((_renderer = GetRenderer()) != null) { // 描画エンジンを再初期化する // ※デバイス画面領域(携帯電話の画面領域)がレスポンダ空間として設定される _renderer->Initialize(); // ルートを取得する if ((_root = static_pointer_cast<SFZRoot>(GetRoot())) != null) { // ルートの実領域をレスポンダ空間[デバイス画面領域(フルスクリーン領域)]に再設定する // ※1. 親レスポンダが存在しないルートはレスポンダ空間内に実領域を設定する // ※2. _root->GetSuitableBound() はレスポンダ空間(=「デバイス画面領域(フルスクリーン領域)」)を返す // ※3. ルートの実領域は「デバイス画面領域(フルスクリーン領域)」に設定される root->SetRealBound(root->GetSuitableBound()); } else { error = SFERR_INVALID_STATE; } } else { error = SFERR_INVALID_STATE; } } } else { error = SFERR_INVALID_STATE; } return error; }
mif ファイルの設定など | |
---|---|
SFBDisplay::SetPrefs 関数を利用するには、 mif ファイルの AEEPRIVID_DISPSETTINGS 特権の設定が必要です。 この特権は、mif エディタで「依存ファイル」のタブを選択し、 BREW SDK のインクルードファイルに含まれている外部クラス 「DISPSETTINGS (0x0103081D)」 を追加する必要があります。 なお、フルスクリーンモードはシミュレータでは対応していません(2011 年 6 月 13 日現在)。 動作確認は実機(BREW 3.1 以降)で行う必要があります。 ※ フルスクリーンモードに対応していない機種も存在します。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |