SophiaFramework UNIVERSE 5.3 |
カスタマイズする前の helloworld アプリは下記のように動作します。
それでは、helloworld アプリを次のようにカスタマイズしましょう。
OnKey 関数の中から呼び出される Draw 関数は、 背景を白色で塗り潰し、文字列 "Hello World" を黒色で描画します。
例 4.8. 文字列 "Hello World" を表示しない HandleRender 関数の実装
// 全画面再描画ハンドラ Bool helloworld::HandleRender(SFXEventConstRef event) { // ここにアプリ開始/再開時と優先的イベントハンドラ終了時の全画面再描画を記述する static SFXRGBColor::AtomRecConst theme = { {{0x00, 0xFF, 0xFF, 0xFF}} // 白色 }; SFXGraphicsPtr graphics; Bool result(false); // SFXGraphics インスタンスを取得する if ((graphics = SFXGraphics::GetInstance()) != null) { // デバイス画面領域を白色で塗りつぶす graphics->ClearRectangle(SFXGraphics::GetDeviceRectangle(), theme); // デバイス画面を更新する graphics->Update(); result = true; } return result; }
HandleRender 関数 | |
---|---|
SFCApplication::HandleRender 関数は、 アプリ開始/再開時と優先的イベントハンドラ終了時にに自動的に呼び出される仮想関数です。 SFCApplication を継承するアプリケーションクラスの HandleRender 関数には、デバイス画面を再描画する処理を記述します。 上の例では、画面を白色で塗り潰す処理がオーバーライドされています。 |
HandleRender 関数の戻り値 | |
---|---|
HandleRender 関数は、 画面を再描画した場合は true、しなかった場合は false を返します。 |
画面の更新 | |
---|---|
HandleRender 関数の実装では、 SFXGraphics::Update 関数を呼び出して画面を更新する必要があります。 上の例の場合、下記のコードにより画面は再描画されます。 graphics->Update();
|
例 4.9. Draw 関数
// Draw 関数は OnKey 関数内から呼び出される Void Draw(Void) { // 画面を白色で塗り潰して文字列 "Hello World" を描画する // SFXGraphics インスタンスを取得する SFXGraphicsPtr graphics = SFXGraphics::GetInstance(); if (graphics != null) { // 画面を白色で塗りつぶする // SFXGraphics::GetDeviceRectangle() で画面領域全体を取得する // SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) は白色を表します( 左から R、G、B、アルファ値 )。 graphics->ClearRectangle(SFXGraphics::GetDeviceRectangle(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)); // 画面に文字列 "Hello World" を描画する graphics->DrawSingleText("Hello World", SFXGraphics::GetDeviceRectangle(), SFXRGBColor(0x00, 0x00, 0x00, 0x00)); // 最後に SFXGraphics::Update() を呼び出して画面を再描画する // ※この一行を記述しなければ、画面は更新されない graphics->Update(); // ※Draw 関数では、"true"や"false"を返す必要がない } }
Draw 関数の戻り値 | |
---|---|
HandleRender 関数と異なり、 Draw 関数は true や false を返す必要はありません。 |
画面の更新 | |
---|---|
Draw 関数の中で SFXGraphics::Update 関数を呼び出さなければ画面は更新されません。 レスポンダを再描画する場合は、 描画エンジンが SFXGraphics::Update 関数を呼び出すので、この関数を呼び出す必要はありません。 |
1 キー(AVK_1)が押された場合、 Draw 関数を呼び出すように OnKey 関数をカスタマイズします。
例 4.10. OnKey 関数のカスタマイズ
// OnKey 関数: キーハンドラ Bool helloworld::OnKey(UInt16 key) { // ここに BREW 環境から受信したキーイベントの分岐処理を記述する switch (key) { case AVK_SELECT: // セレクトキーのキーイベントを受信したとき Terminate(); // アプリを終了する return true; // キーイベントを処理したので true を返す //*** 太字が追加部分 case AVK_1: // 1 キーのキーイベントを受信したとき Draw(); // 文字列 "Hello World" を描画する return true; // キーイベントを処理したので true を返す } return false; // キーイベントを処理していないので false を返す }
OnKey 関数の戻り値 | |
---|---|
OnKey 関数は、 キーイベントを処理した場合は true、 処理しなかった場合は false を返します。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |