關於部落格
RPG製作大師XP腳本為主要更新

RPG製作大師VX腳本為其次更新

RPG製作大師VX_Ace目前不考慮

RPG製作大師MV腳本完全沒打算

留言完建議重新整理看看是否顯示

目前不處理本舖外腳本的相關問題

其他相關事項請觀看規定注意事項

本舖未來的經營計畫與VA的支援




var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37462754-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

  • 307163

    累積人氣

  • 12

    今日人氣

    0

    追蹤人氣

【腳本】窗口設置教學

首先先隨便寫個簡單的窗口腳本...

class Window_Sword < Window_Base
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 0, 160, 32, '文字內容', 0)
  end
end

第1行  class Window_Sword < Window_Base
取1個類名「Window_Sword」並繼承「Window_Base」了這個類
主要是靠「Window_Base」類在產生窗口,並定義了一些文字顏色的方法
但現在只要知道要呼叫這個窗口必須用這個類名來可
 
第2行  def initialize
依據系統設定,會自動執行名稱為initialize的方法
只要知道當呼叫類時,會自動的執行名稱為initialize的方法
 
第3行  super(0, 0, 160, 64)
傳遞4個參數給被這個方法取代掉的方法,我這樣說可能不清楚...
通常這個類和繼承的類的方法都會共用,當發現一樣的方法名之時
則就會由下面同名的方法取代上方同名的方法
而此腳本就是去呼叫已經被這個方法取代的initialize方法
總之就是去執行「Window_Base」腳本的initialize方法就是了...
如果還想深入了解這個特性,可以參考文章插件式腳本教學RMXP畫面運行說明
數值要輸入的數值分別是窗口的位置和大小【super(X座標, Y座標, 窗口寬度, 窗口高度)
 
第4行  self.contents = Bitmap.new(width - 32, height - 32)
該類本身的contents方法代入「Bitmap」這個類並傳送2個參數
「Bitmap」為位圖的類,要顯示窗口的文字必須用到他(知道這樣就好了)
參數為設置可顯示的範圍【self.contents = Bitmap.new(位圖寬度, 位圖高度)
可以看出來,第3行是產生窗口(無顯示內容的效果,就只有窗口而已...)
而這行的腳本則是在窗口的範圍內設置1個可以顯示內容的框框!!
而【(width - 32, height - 32)】可以說是(窗口的寬度 - 32, 窗口的高度 - 32)
為什麼要減32呢?可以想成窗口的外框有厚度好了,這-32就是減掉窗口的厚度
只能在適當的空間顯示內容,不加-32的話,則位圖框就會穿越窗口外框厚度
由於窗口的大小沒有足夠的空間顯示所有的位圖,就會跑出箭頭的符號標示還有內容
 
第5行  refresh
呼叫名稱為refresh的方法
 
第7行  def refresh
因腳本【refresh】進行呼叫,而執行這個方法包覆起來的腳本
可能有很多人設置窗口時,當你用窗口顯示了1個變數的數值之時
當那個變數被修改之後,你會發現窗口還是呆呆的顯示未修改的數值,沒有被更改
如果想要讓窗口的內容更新,就可以呼叫這個方法,將內容在重新設定1次
但是不可能不斷的循環不斷使用這方法,可能卡死,所以最好在變更時呼叫1次即可
要在別的腳本呼叫這個方法可以用腳本【代入這個窗口的變量.refresh】來進行呼叫
 
第8行  self.contents.clear
消除這個窗口已經顯示的內容,如果不加的話...當你重新呼叫refresh方法來更新內容時
會發現之前的內容會和新的內容重疊的可笑現象...
所以這個腳本的用途就是清除舊的內容,防止新和舊的內容顯示在一起
 
第9行  self.contents.font.color = normal_color
設定文字的顏色,使用這個腳本後,則這個腳本以下的顯示內容腳本都已這顏色為準
如果再使用1次就變更為新的顏色,特性很像事件 [顯示文章] 的「C」顏色控制碼一樣
腳本中的【normal_color】,這其實是在呼叫名稱為normal_color的方法
可能有些人會懷疑,這方法在哪裡??怎沒看到!!,在第1行繼承就已經繼承了1個類
所以繼承的類和該類的方法可以共通!!所以...看到「Window_Base」腳本
在第64行發現了normal_color方法,這個方法代表一般文字的顏色(白色)
我下看還會發現無效、系統、危機...之類的顏色,可以複製他的方法名貼到此腳本上
此外在第39行發現text_color方法,這個是在事件 [顯示文章] 用「C」控制碼的顏色
一樣也可以用於窗口中!!,如果不想用「Window_Base」設置好的,也可直接指定顏色
但指定顏色記得要呼叫「Color」類,並給該類4個參數分別為(紅, 綠, 藍, 不透明度)
使用範例:
# 顯示系統顏色(淡藍色)
self.contents.font.color = system_color
# 同在事件 [顯示文章] 中輸入「C[5]」的顏色相同
self.contents.font.color = text_color(5)

# 直接指定顏色,數值分別是(紅, 綠, 藍, 不透明度)
self.contents.font.color = Color.new(255, 255, 0, 255)
 
第10行  self.contents.draw_text(0, 0, 160, 32, '文字內容', 0)
設定文字的內容,設置內容分別為【(X座標, Y座標, 寬度, 高度, '內容', 靠邊)
X和Y座標的起始點為窗口最左上方的X和Y座標+16為此設置的X和Y座標的0
寬度和高度設定的是這個文字的顯示範圍,文字內容多到超出範圍則只能顯範圍內的字
內容當然是設定顯示的文字內容,文字內容必須為字符串才行(不然發生錯誤TypeError
(字串為被"符號或是'符號包圍住的內容才算是字串)
新人常常會嘗試顯示變數的數值而發生錯誤,如果要顯示數值,可以用數字的to_s方法
就會將數值改成字串來表示,例如:【變數或是數值.to_s】,就樣就視同字串了!!
最後1個靠邊,設置0表示靠左邊、1為中央、2為靠右,依照此設置的寬度為準!!
其他窗口的效果可以參考腳本:遊戲說明腳本
 

 

相簿設定
標籤設定
相簿狀態