実験 800x450 公開中

お手軽ウィンドウ表示

投稿者:とりか 投稿日時: 2013/09/08 19:39:19
<お手軽ウィンドウ表示ver.1.0.0.1>
自由な形のデフォルトレイアウトな文字列入りウィンドウを表示、 削除する関数を実装しています。
ウィンドウのみの表示、文字列のみの表示、削除の関数も同梱。

どこにでもウィンドウ、文字列を好きな形で表示できます。

1、デフォルトレイアウトウィンドウ表示
 speak文でのウィンドウ、文字列表示機能を位置、サイズ指定により自由な形で利用できます。

2、ウィンドウのみの表示
 ウィンドウのみを左上位置、サイズ指定で表示できます。ステータスウィンドウ自作などに利用可能です。

3、文字列のみの表示
 文字列のみを左上位置、サイズ指定で表示できます。文字そのもののサイズ変更も可能になっています。(speak文表示時のフォントサイズは32)

※中心位置で座標指定したい場合、表示サイズから逆算して左上位置をずらすことで指定が可能となりますので各自利用時に計算して指定してください。

コピペでの実装に関する投げやりなサポートはこちら
http://blog.rmake.jp/%25E3%2581%25A8%25E3%2582%258A%25E3%2581%258B/4755
閲覧: 308 評価: 29
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
  • Starwhite
あなたはまだ評価していません。
#### <お手軽ウィンドウ表示ver.1.0.0.1> #### # 自由な形のデフォルトレイアウトな文字列入りウィンドウを表示、 # 削除する関数を実装しています。 # ウィンドウのみの表示、文字列のみの表示、削除の関数も同梱。 # 当たり判定に関してはだいぶアバウトなので # 別途当たり判定用のスプライトを生成することを推奨します。 ## 仕様上の不具合 ## # ウィンドウに使う正方形画像以下のウィンドウサイズを設定すると表示がおかしくなる。 # 適度なウィンドウサイズと画像で利用すること。 # 文字列表示を行う際に指定サイズ以上の幅を持つ文字列は自動的に右端で折り返される。 # ただし下方向に文字列がはみ出た場合表示されない。 # こちらも適度な表示スペース、文字サイズで利用すること。 game.loading do |loader| loader.add :window, :system => "window" loader.add :gui_item, :system => "gui_item" loader.add :WindowTemp, 193 loader.add :Title, 233 # loader.add :TheArrow, 195 end game.on_init do set_window_image :window set_gui_image :gui_item scene_change :start_scene end scene :start_scene do |scene| scene.loading do end # ここにゲームの処理内容を記述します。 scene.on_init do scene.add :image, :template => :BackG, :position => [0, 0], :color => [100, 100, 255, 100] # ウィンドウのみ描画 # SWin( [追加するシーン], [表示左上位置X], [表示左上位置Y], [表示サイズX], [表示サイズY] ) ArrWin = SWin(scene, 600, 50, 100, 100) # 文字のみ描画、表示サイズ以上の文字列を入れると入りきらないので注意 # SWor( [追加するシーン], [表示文字列], [表示文字サイズ], [表示左上位置X], [表示左上位置Y], [表示サイズX], [表示サイズY] ) ArrWor = SWor(scene, "テストああああああああああああああああ", 32, 600, 200, 100, 100) speak("Hello CoR World!!") # ウィンドウや文字の削除 # DW3P( [描画関数の返り値を代入した変数] ) DW3P(ArrWin) DW3P(ArrWor) # 簡単ウィンドウ表示、speak関数で呼び出される # WPri( [追加するシーン], [表示文字列], [表示左上位置X], [表示左上位置Y], [表示サイズX], [表示サイズY] ) ArrWP = WPri(scene, "テスト", 100, 100, 300, 100) speak("テスト表示です") # 簡単ウィンドウ削除 DW3P(ArrWP) speak("表示テストを終わります") game.change_project "start_menu" end end # 画面の幅を取得 def screen_width game.get_screen_size[0] end # 画面の高さを取得 def screen_height game.get_screen_size[1] end sprite_template :BackG do |st| st.texture :BackG st.src_size 1, 1 st.dest_size screen_width, screen_height end sprite_template :Title do |st| st.texture :Title end ## コピペここから #### 簡単ウィンドウ表示関数 #### ## 大域変数 ## # ここから変更可能部分 # ウィンドウに使う正方形画像(変更可) # □□□ このような形に上下3分割できる画像を使用すること # □□□ 関数側で計9パーツに分割し、表示を行う。 # □□□ 斜め方向四方は拡大率そのまま、中心と四方は高さや幅で伸びるので注意 SWinWDI = :WindowTemp # 文字送りの▼マーク画像(変更可) ArrowWDI = :gui_item # ArrowWDI = 195 # ウィンドウに使う画像の縦横サイズ(ウィンドウ画像変更時に各自調整すること) SWinFL_Size = 30 # ウィンドウの分割表示用変数(変更不要、変更時不具合発生の原因になる可能性あり) SWinCutSize = SWinFL_Size / 3 # 文字送り用▼画像のスプライトテンプレート(変更可、▼画像差し替えたいときにどーぞ) sprite_template :T_Arrow do |st| st.texture ArrowWDI #st.texture :window # デフォルト画像表示用の矩形設定、消せば使用されている本来の画像が表示される st.src_size 32, 32 st.dest_size 16, 16 st.copy_rect 0, 1 end # ここまで変更可能部分 ## SimpleWindow ## def SWin(myScene, x_Pos, y_Pos, x_Size, y_Size) NW = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos, y_Pos] NE = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + x_Size - SWinCutSize, y_Pos] SW = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos, y_Pos + y_Size - SWinCutSize] SE = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + x_Size - SWinCutSize, y_Pos + y_Size - SWinCutSize] N2 = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + SWinCutSize, y_Pos] W2 = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos, y_Pos + SWinCutSize] S2 = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + SWinCutSize, y_Pos + y_Size - SWinCutSize] E2 = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + x_Size - SWinCutSize, y_Pos + SWinCutSize] CNT = myScene.add :image, :template => :MyWinTemp, :position => [x_Pos + SWinCutSize, y_Pos + SWinCutSize] NW.change_animation :TypeNW NE.change_animation :TypeNE SW.change_animation :TypeSW SE.change_animation :TypeSE N2.change_animation :TypeN2 W2.change_animation :TypeW2 S2.change_animation :TypeS2 E2.change_animation :TypeE2 CNT.change_animation :TypeCNT N2.set_dest_size x_Size - SWinCutSize * 2, SWinCutSize W2.set_dest_size SWinCutSize, y_Size - SWinCutSize * 2 S2.set_dest_size x_Size - SWinCutSize * 2, SWinCutSize E2.set_dest_size SWinCutSize, y_Size - SWinCutSize * 2 CNT.set_dest_size x_Size - SWinCutSize * 2, y_Size - SWinCutSize * 2 ArrWindow = [NW, NE, SW, SE, N2, W2, S2, E2, CNT] end ## ウィンドウ表示用スプライトテンプレート ## sprite_template :MyWinTemp do |st| st.texture SWinWDI st.src_size SWinCutSize, SWinCutSize st.dest_size SWinCutSize, SWinCutSize st.copy_rect 1, 1 st.animation :TypeNW do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [0, 0] end st.animation :TypeNE do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [2, 0] end st.animation :TypeSW do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [0, 2] end st.animation :TypeSE do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [2, 2] end st.animation :TypeN2 do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [1, 0] end st.animation :TypeW2 do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [0, 1] end st.animation :TypeS2 do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [1, 2] end st.animation :TypeE2 do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [2, 1] end st.animation :TypeCNT do |commands| commands.loop false commands.copy_rect :frame => 0, :src => [1, 1] end end ## SimpleWord ## def SWor(myScene, myWord, myFontSize, x_Pos, y_Pos, x_Size, y_Size) w1 = myScene.text :position => [x_Pos, y_Pos], :text => myWord w1.set_text_area_size x_Size, y_Size w1.set_font_point_size myFontSize ArrWord = [w1] end ## WindowPrint ## def WPri(myScene, myWord, x_Pos, y_Pos, x_Size, y_Size) SetPX = 16 SetPY = 16 A_SetPX = 32 A_SetPY = 32 myFontSize = 32 ArrWin = SWin(myScene, x_Pos, y_Pos, x_Size, y_Size) ArrWor = SWor(myScene, myWord, myFontSize, x_Pos + SetPX, y_Pos + SetPY, x_Size - (SetPX * 2), y_Size - (SetPY * 2)) ArrArr = myScene.add :image, :template => :T_Arrow, :position => [x_Pos + x_Size - A_SetPX, y_Pos + y_Size - A_SetPY] ArrWor.each do |item| ArrWin.push(item) end ArrWin.push(ArrArr) return ArrWin end ## DeleteWindow*Word*WindowPrint(DW3P) ## def DW3P(arrW) arrW.each do |item| item.delete end end #### 簡単ウィンドウ表示関数 #### ## コピペここまで
コード一覧
  • start.rb

コメントするには、ログインする必要があります。

コメント一覧
お知らせ

2014/03/04 ver. 0.1.39 を公開しました!
・0.1.36でWindowsで起動しない問題を修正しました
(Android版はバージョン番号のみの変更です。)

2014/03/04 ver. 0.1.36 を公開しました!
・アプリケーションアイコンを変更しました
・セーブ・ロードを繰り返すとアプリが強制終了する問題を修正しました
・他、重大なバグを修正しました

ダウンロードはこちらから。

2013/07/17 Code on Rmakeをα公開しました!