![]() ![]() ![]() ![]() |
SophiaFramework UNIVERSE 5.2 |
カスタマイズする前の helloworld アプリは下記のように動作します。
それでは、helloworld アプリを次のようにカスタマイズしましょう。
OnKey 関数の中から呼び出される Draw 関数は、 背景を白色で塗り潰し、文字列 "Hello World" を黒色で描画します。
例 4.7. 文字列 "Hello World" を表示しない HandleRender 関数の実装
// 全画面描画ハンドラ Bool helloworld::HandleRender(SFXEventConstRef event) { // ここにアプリ開始時とレジューム時の全画面の描画処理を記述する SFXGraphicsPtr graphics; Bool result(false); if (IsRenderable()) { // 画面が再描画可能なら(優先的イベントハンドラが登録されていないなら) // SFXGraphics インスタンスを取得する graphics = SFXGraphics::GetInstance(); if (graphics != null) { // 画面を白色で塗り潰す // SFXGraphics::GetDeviceRectangle() で画面領域全体を取得する // SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) は白色を表す( 左から R、G、B、アルファ値 ) graphics->ClearRectangle(graphics->GetDeviceRectangle(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)); // 最後に SFXGraphics::Update() を呼び出して画面を再描画する // ※この一行を記述しなければ、画面は更新されない graphics->Update(); result = true; // 画面を再描画したので result に true を設定する } } return result; // 画面を再描画した場合は true、そうでない場合は false を返す }
例 4.8. 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(graphics->GetDeviceRectangle(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)); // 画面に文字列 "Hello World" を描画する graphics->DrawSingleText("Hello World", graphics->GetDeviceRectangle(), SFXRGBColor(0x00, 0x00, 0x00, 0x00)); // 最後に SFXGraphics::Update() を呼び出して画面を再描画する // ※この一行を記述しなければ、画面は更新されない graphics->Update(); // ※Draw 関数では、"true"や"false"を返す必要がない } }
![]() |
Draw 関数の戻り値 |
---|---|
HandleRender 関数と異なり、 Draw 関数は true や false を返す必要はありません。 |
![]() |
画面の更新 |
---|---|
Draw 関数の中で SFXGraphics::Update 関数を呼び出さなければ画面は更新されません。 レスポンダ内の領域を描画する場合は、 描画エンジンが SFXGraphics::Update 関数を呼び出すので、開発者はこの関数を呼び出す必要はありません。 |
1 キーが押された場合、 Draw 関数を呼び出すように OnKey 関数をカスタマイズします。
例 4.9. 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. |
![]() ![]() ![]() ![]() |