日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何出色的研究 RGSS3 (三) 形式的调整的细节

發布時間:2025/4/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何出色的研究 RGSS3 (三) 形式的调整的细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在一個我們研究了添加到窗體方法的選擇,這個問題來研究窗體類的細節。


所有形式的父類的?Window_Base 四個參數需要初始化。

#--------------------------------------------------------------------------# ● 初始化對象#--------------------------------------------------------------------------def initialize(x, y, width, height)superself.windowskin = Cache.system("Window")update_paddingupdate_tonecreate_contents@opening = @closing = falseend

這四個參數表示窗體左上角的橫縱坐標以及窗體的寬度與高度。

Window_Base 中還提供了繪制窗體的一整套方法。

比方說繪制文本(draw_text)、?繪制值槽(draw_gauge)、繪制圖標(draw_icon)、繪制角色肖像圖(draw_face)等等。


Window_Selectable 是擁有光標移動、滾動功能的窗體的父類。

當中定義了一些獲得窗體中的繪制項目所需信息的方法。

比方獲取列數(col_max)、獲取行間距的寬度(spacing)、獲取項目的寬度(item_width)等等。

Window_Selectable 類中還定義了處理光標在項目中移動以及選擇的方法。

比方處理光標的移動(process_cursor_move)、“確定”和“取消”的處理(process_handling)等等。


Window_Command 的用法上一期已經講過了。它另一個子類。Window_HorzCommand 表示能夠橫向選擇的指令窗體。


僅僅要是繼承自?Window_HorzCommand 的指令裝口就是橫向選擇的。

我們發現盡管指令窗體能夠橫向選擇,可是?Window_Selectable 的子類卻僅僅能縱向選擇。

所以如今參照?Window_HorzCommand?寫一個?Window_HorzSelectable 來處理橫向選擇的窗體。

#encoding:utf-8 #============================================================================== # ■ Window_HorzSelectable #------------------------------------------------------------------------------ #  擁有橫向光標移動、滾動功能的窗體 #==============================================================================class Window_HorzSelectable < Window_Selectable橫向與縱向的窗體差別有:

縱向窗體使用上下鍵切換選項;橫向窗體使用左右鍵切換選項。


選項數量超過一頁能顯示的最大數量時。縱向窗體的上下邊界會有三角箭頭,而橫向窗體的左右邊界有三角箭頭。

縱向窗體的選項是從起點向下繪制的;橫向窗體的選項是從起點向右繪制的。

參考 Window_HorzCommand??將?Window_Selectable 中與以上三種差別有關的方法挑選出來在?Window_HorzSelectable 中重寫。

#--------------------------------------------------------------------------# ● 獲取列數#--------------------------------------------------------------------------def col_maxreturn 4end#--------------------------------------------------------------------------# ● 獲取行間距的寬度#--------------------------------------------------------------------------def spacingreturn 8end#--------------------------------------------------------------------------# ● 獲取首列位置#--------------------------------------------------------------------------def top_colox / (item_width + spacing)end#--------------------------------------------------------------------------# ● 設置首列位置#--------------------------------------------------------------------------def top_col=(col)col = 0 if col < 0col = col_max - 1 if col > col_max - 1self.ox = col * (item_width + spacing)end#--------------------------------------------------------------------------# ● 獲取尾列位置#--------------------------------------------------------------------------def bottom_coltop_col + col_max - 1end#--------------------------------------------------------------------------# ● 設置尾列位置#--------------------------------------------------------------------------def bottom_col=(col)self.top_col = col - (col_max - 1)end#--------------------------------------------------------------------------# ● 確保光標在畫面范圍內滾動#--------------------------------------------------------------------------def ensure_cursor_visibleself.top_col = index if index < top_colself.bottom_col = index if index > bottom_colend#--------------------------------------------------------------------------# ● 計算窗體內容的寬度#--------------------------------------------------------------------------def contents_width(item_width + spacing) * item_max - spacingend#--------------------------------------------------------------------------# ● 計算窗體內容的高度#--------------------------------------------------------------------------def contents_heightitem_heightend#--------------------------------------------------------------------------# ● 獲取項目的繪制矩形#--------------------------------------------------------------------------def item_rect(index)rect = superrect.x = index * (item_width + spacing)rect.y = 0rectend#--------------------------------------------------------------------------# ● 光標向下移動#--------------------------------------------------------------------------def cursor_down(wrap = false)end#--------------------------------------------------------------------------# ● 光標向上移動#--------------------------------------------------------------------------def cursor_up(wrap = false)end#--------------------------------------------------------------------------# ● 光標移至下一頁#--------------------------------------------------------------------------def cursor_pagedownend#--------------------------------------------------------------------------# ● 光標移至上一頁#--------------------------------------------------------------------------def cursor_pageupendend

盡管 Window_Selectable 默認的是縱向選擇的窗體,可是實際上當中定義了上下左右四個鍵的行為,并用?row_max 與 col_max 方法來控制行數與列數,?僅僅要改變這兩個值就能夠將它擴展為n*m的隨意選擇的窗體。

index 是用來表示選項編號的變量,它能夠通過非常easy的公式與選項的行列號進行換算。

col = inex %?col_max、row = index / col_max

這里我們設置一行最多4列,當索引超出當前的4列時。就須要 ensure_cursor_visible 方法來改變首列和尾列。使光標在畫面范圍內滾動。


top_col=(col) 等方法事實上非常坑,重載的=操作符改變了參數index的值。這不符合常理。


最后我們用空的方法替換了光標上下移動以及翻頁的方法。這樣就僅僅能用左右鍵來切換選項了。


最后來把游戲菜單畫面改為橫向吧。

這是默認的菜單畫面:


Scene_Menu 中有三個窗體,排除金幣窗體,菜單畫面中顯示指令的窗體與顯示隊伍成員狀態的窗體都能夠改為橫向。

Window_MenuCommand 繼承自?Window_Command。如今把它的父類改為?Window_HorzCommand。

然后改動一下?Window_MenuCommand 的窗體大小。

#--------------------------------------------------------------------------# ● 獲取列數#--------------------------------------------------------------------------def col_maxreturn 7end#--------------------------------------------------------------------------# ● 獲取窗體的高度#--------------------------------------------------------------------------def window_heightreturn 48end#--------------------------------------------------------------------------# ● 獲取窗體的寬度#--------------------------------------------------------------------------def window_widthreturn Graphics.widthend

將窗體寬度改為與游戲窗體的寬度同樣,高度為48,考慮到共同擁有7個選項。將最大列數設為7。


Window_MenuStatus 原本是?Window_Selectable 的子類。如今它的父類改為?Window_HorzSelectable。

接下來還是改動窗體的寬度與高度。


#--------------------------------------------------------------------------# ● 獲取窗體的寬度#--------------------------------------------------------------------------def window_widthGraphics.widthend#--------------------------------------------------------------------------# ● 獲取窗體的高度#--------------------------------------------------------------------------def window_heightGraphics.height - 96end

盡管?Window_MenuStatus 的大小正確了,可是它的起點不正確。

在?Scene_Menu 把窗體的起始坐標初始化成正確的值。

#--------------------------------------------------------------------------# ● 生成狀態窗體#--------------------------------------------------------------------------def create_status_window@status_window = Window_MenuStatus.new(0, 48)end
如今總體窗體框架已經正確。可是狀態窗體中角色屬性的繪制還沒有變。

#--------------------------------------------------------------------------# ● 繪制項目#--------------------------------------------------------------------------def draw_item(index)actor = $game_party.members[index]enabled = $game_party.battle_members.include?(actor)rect = item_rect(index)draw_item_background(index)draw_actor_face(actor, rect.x, rect.y, enabled)draw_actor_name(actor,rect.x, rect.y+96)draw_actor_class(actor,rect.x, rect.y+96+line_height*1)draw_actor_icons(actor,rect.x,rect.y+96+line_height*2)draw_actor_level(actor,rect.x, rect.y+96+line_height*2)draw_actor_hp(actor,rect.x, rect.y+96+line_height*3)draw_actor_mp(actor,rect.x,rect.y+96+line_height*4)draw_actor_tp(actor,rect.x,rect.y+96+line_height*5)end用 Window_Base 中提供的工具繪制角色的屬性。


最后調整一些細節參數。

終于成品:











版權聲明:本文博主原創文章,博客,未經同意不得轉載。

總結

以上是生活随笔為你收集整理的如何出色的研究 RGSS3 (三) 形式的调整的细节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美肉大捧一进一出免费视频 | 91精品国产综合久久久蜜臀粉嫩 | 国产成人av免费看 | 亚洲精品伊人 | 老妇free性videosxx| 国产精品情侣自拍 | 在线免费看a | 欧美日韩国产一区在线 | 边啃奶头边躁狠狠躁 | 中文日韩字幕 | www黄色网址 | 欧美激情精品久久久久久蜜臀 | 精品久久久无码中文字幕边打电话 | 高潮在线视频 | 青草av在线 | 巨胸大乳www视频免费观看 | 亚洲欧美乱综合图片区小说区 | 一级黄色录像免费观看 | 波多野结衣99 | 精品久久网站 | 五月天激情小说 | 亚洲熟女一区二区 | 亚洲国产一二 | 亚洲国产中文在线 | 亚洲a人| 日本三级大片 | 激情小说五月天 | 少妇高潮淫片免费观看 | 蜜桃视频在线观看一区二区 | av高清| 在线观看免费黄网站 | 国产又粗又黄又爽又硬 | 国产精品久久久久国产a级 国产一区二区在线播放 | 精品人妻在线播放 | 亚洲中文无码av在线 | 国产夫妻露脸 | 男女靠逼视频 | 国产精品一区二区免费看 | 国产精品视频亚洲 | 婷婷综合av | 五月婷婷丁香六月 | 欧美自拍在线 | 亚洲精品国产精品国自 | 毛片基地站| 国产精品夜夜 | 色婷婷在线播放 | 国产精品无 | 久久久久久免费毛片精品 | 亚洲综合网址 | 夜夜操天天射 | 天堂在线视频免费 | 国产在线色 | 婷婷色一区二区三区 | 成人免费视频久久 | 亚洲一级片免费 | 中文字幕亚洲乱码 | av无遮挡| 成人中文字幕+乱码+中文字幕 | 中文在线字幕 | 操天天| 中国女人做爰视频 | 九九视频这里只有精品 | 超碰在线91 | 久久国产香蕉视频 | 欧美国产成人精品一区二区三区 | 在线看片一区二区 | 欧美爽爽爽 | 激情小说亚洲图片 | 成人在线观看视频网站 | 中字幕视频在线永久在线观看免费 | 黄色av国产 | 欧美狠狠操| 色爱综合网 | 碰碰97| 免费a视频 | av爱爱网站 | 西野翔夫の目の前で犯在线 | 国产成人精品一区二区在线小狼 | 亚洲精品久 | 精品久久久久久无码国产 | 久久亚洲第一 | 精品国产aⅴ一区二区三区东京热 | 国产无遮挡aaa片爽爽 | 久久久av片 | 黄色大片aaa| 成人免费无遮挡无码黄漫视频 | 欧美精品色婷婷五月综合 | 不卡一区二区在线视频 | 制服丝袜成人动漫 | 国产美女明星三级做爰 | 91 久久| 成 人片 黄 色 大 片 | 熟女熟妇伦久久影院毛片一区二区 | 深夜福利麻豆 | 精品久久蜜桃 | 色中色在线视频 | 国产亚洲精品久久久久久青梅 | 双性懵懂美人被强制调教 | 欧洲av无码放荡人妇网站 |