今回は、高速化や余分なリソースを使わなくスムーズに動かす方法を解説してみましょう。下の例題が完成ソースとなりますが、まずは下のソースをコピペしてTTSneoデザイナで実行してみて下さい。使い方は簡単。ボタンにマウスが乗ったら色を変える普通のソースなので、左側のボタン上でマウスを動かして動作を確認し、右側のリセットボタンを押して次は真ん中のボタン上でマウスを動かしてみて下さい。通常では目に見えないのですが、このように動作が目に見えるようにしてみるとどうでしょう?たかが色を変えるだけの処理ですが、マウスイベントで色を変える指定をしただけでは常に処理されているのが分かると思います。
つまり、処理がされているという事は他の処理と重なったときには速度が落ちてしまいます。また、リソースも食ってしまいますよね。このようなマウスに乗った時のみしかいらない処理にはそれと同じ動きをするソースを記述する必要があるのです。殆どの場合は、このような処理を行わずにそのイベント内で直接色を変えるソースを記述しているのを良く見かけます。しかしこれは間違いを正そうとしているにすぎないのです。本当に動的に処理が必要な場合のみ通常のイベント処理を利用し、イベント内の処理を間接的に利用するのであれば、それに応じたソースを記述しましょう。
説明するよりも、下の例題を実行してソースを見てもらえば分かると思いますが、どのような視点で見ればよいのかを簡単に説明します。コメントで一応記述していますが、最初の通常の部分と改良の部分の変数の数を見たり、手順内の通常の部分と改良の分を良く見て下さい。違いが分かりますよね?マウスフラグという変数がたった一つ増えているだけです。つまり、マウスイベントにてスイッチを付け足しているのです。ボタンの背景が通常の時と色が変わった時の処理の仕方を変えているだけなのです。スイッチが入ってなかったらスイッチをオンへ変えて、その逆だとスイッチをオフへとしているだけの違いです。このような工夫を少しするだけで高速化や余分なリソースを使わないように出来たりもしてしまいますので、今開発中のソースをもう一度見直してみましょう。
’通常の設定項目
通常フラグは 0
’改良の設定項目
改良フラグは 0
マウスフラグは オフ
固定ウィンドウ1を使う
その中の大きさを(364,258)へ変えろ
その名前を「イベント処理サンプル」へ変えろ
その背景を&h8000000Fへ変えろ
その種類を「固定」へ変えろ
その最大化ボタンをオフへ変えろ
その位置を中央へ変えろ
文章テキスト1を作れ
その位置と大きさを(10,40,340,210)へ変えろ
ボタン1を作れ
その位置と大きさを(10,10,130,25)へ変えろ
その名前を「マウスを載せる(通常)」へ変えろ
ボタン2を作れ
その位置と大きさを(150,10,130,25)へ変えろ
その名前を「マウスを載せる(改良)」へ変えろ
ボタン3を作れ
その位置と大きさを(290,10,65,25)へ変えろ
その名前を「リセット」へ変えろ
固定ウィンドウ1の表示をオンへ変えろ
待機
’通常のマウスイベントにて背景を変える処理(処理速度低下&リソース食い)
手順は 固定ウィンドウ1のボタン1でマウスが動く
もし ボタン2の背景は 「&h8080C0」 なら ボタン2の背景を&h8000000Fに変えろ
ここだけの変数は 結果
通常フラグは 通常フラグ+1
結果は 「通常イベントで[通常フラグ]回目のマウス反応キャッチ!」
ボタン1の背景を&h8080C0へ変えろ
文章テキスト1の内容を文章テキスト1の内容&「[結果][改行]」へ変えろ
終わり
’ちょっとだけ工夫した背景を変える処理(処理速度高速化&無駄なリソースを使わない)
手順は 固定ウィンドウ1のボタン2でマウスが動く
もし ボタン1の背景は 「&h8080C0」 なら ボタン1の背景を&h8000000Fに変えろ
もし マウスフラグは オフ なら
ここだけの変数は 結果
改良フラグは 改良フラグ+1
結果は 「改良イベントで[改良フラグ]回目のマウス反応キャッチ!」
ボタン2の背景を&h8080C0へ変えろ
文章テキスト1の内容を文章テキスト1の内容&「[結果][改行]」へ変えろ
マウスフラグは オン
もし終わり
終わり
手順は 固定ウィンドウ1でマウスが動く
リセット
終わり
手順は 固定ウィンドウ1の文章テキスト1でマウスが動く
リセット
終わり
手順は リセット
もし ボタン1の背景は 「&h8080C0」 なら ボタン1の背景を&h8000000Fに変えろ
もし マウスフラグは オン なら
もし ボタン2の背景は 「&h8080C0」 なら ボタン2の背景を&h8000000Fに変えろ
マウスフラグは オフ
もし終わり
終わり
手順は 固定ウィンドウ1のボタン3をクリック
通常フラグは 0
改良フラグは 0
文章テキスト1の内容をクリア
文章テキスト1に焦点
終わり