[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
C#の.NETで何かゲームなんかを作ろうと思った場合、ちょっと考えるだけでも
引っかかる部分がありました。
それが、ウインドウに表示する画像やテキストの表示切り替えです。
例えばノベルゲーなんかで、画面下側でテキストが表示されて決定ボタンを押すと
前のテキストが消えて次のテキストが表示されますよね。
テキスト更新する処理をするときにコントロール名(label1、lavel2など)を指定しなきゃいけませんが
画面には複数の種類のコントロールを扱わなければいけません。
メニュー画面で表示するテキストエリア、通常画面で表示するテキストエリア……
これらを表示するためにコントロールを最初から1つ1つ定義するのは、非効率的です。
最初から表示する数が分かっていれば良いのですが、表示するコントロール数が不明である以上、
画面の種類ごとにテンプレ化し、動的に生成する必要が出てきます。
そのため、今回は画面にテキストを表示するlabelのテキストデータと座標を作成・更新する関数を作成してみました。
using System.Reflection; ctrl.Name = labelName; //ラベル更新 |
この関数では、ラベル名をstring型で指定し、コントロール上に存在しなければ新規で作成し、
既に存在していればラベルに表示するテキストデータと座標を更新します。
・使用例
for(int x=0; x<200; x++) { changeLabel("scroll_Text", "スクロール文字",x ,200); System.Threading.Thread.Sleep(100); } |
新規作成はそれっぽいソースが見つかったのですが、既に存在するラベルを更新する場合の処理の書き方が分からず
結構時間がかかってしまいました(汗)
更新処理の方で使っているcontrols.Findメソッドの型が配列になってるのが、未だよく分かりません。
何で?