[創作] UI簡易教學之二
在上篇以及之前的範例中
大家可以瞭解到UI的本體其實都是frame
有了本體才能以SetScript來讓他主動去執行我們所寫的script *註1
(或以HookScript來掛上script 接在SetScript的東西後執行)
SetScript可以讓frame在註冊的事件觸發的時後自動去執行我們設定的程式
但要是事件不只一樣呢?
以下舉CombatEvents中的一小段作為範例 (由於字數限制有簡化過)
STEP I&II
請延續上篇 以下從 STEP III 開始玩
STEP III
打開core.lua 貼上以下東西 (--表示是註釋,可以不用貼進去)
local f = CreateFrame("Frame") --建立一個Frame用來監聽事件
f:RegisterEvent("PLAYER_REGEN_ENABLED") --註冊事件, 玩家回血時觸發
f:RegisterEvent("PLAYER_REGEN_DISABLED") --註冊事件, 玩家不回血時觸發
f:SetScript("OnEvent", --在事件觸發時執行以下script
function(self, event) --註2
if event == "PLAYER_REGEN_DISABLED" then --停止自動回血也就是進入戰鬥
print("進入戰鬥") --在對話框顯示 進入戰鬥
elseif event =="PLAYER_REGEN_ENABLED" then --開始自動回血也就是離開戰鬥
print("離開戰鬥") --在對話框顯示 離開戰鬥
end --結束if
end --結束function
) --SetScript最後的)
存檔並關掉
註1:
沒有本體也可以設定slash command去手動執行script (範例 /紅字)
註2
這邊引入了兩個變數並命名為self及event
self代表的是f這個frame本身 (因為我們SetScript是set在f上嘛)
event則是OnEvent時的事件名稱
所以我們在這邊引入這個變數用以分辨不同事件
但要是事件只有一項 或是不同事件觸發時都做一樣的事情 那當然不用這樣做囉
因為都是做同樣的事~ 所以不需要去區分 (範例 /memory)
但還有一種情況是事件發生時會有很多變數可以用
最著名的就是COMBAT_LOG_EVENT_UNFILTERED這個事件了 也就是俗稱的CLEU
由於人生就是不斷的戰鬥 所以他最實用
這也導致只要bz一偷改這個東西的變數時 很多UI就會開始哀嚎
這邊就先不提 有興趣可以 google 或是打開之前發的CombatEvents的lua檔來參考
↓
http://www.google.com/search?q=COMBAT_LOG_EVENT_UNFILTERED
EXERCISE
瀏覽所有的Events
http://www.wowwiki.com/Events_(API)
PREP
SetScript除了OnEvent之外還能幹嘛
http://www.wowwiki.com/Widget_handlers
多這兩項是因為上回被噓內容太淺 阿幹我也是初學者啊 這我自學心得吶
--
(RC)) RL: 戰士, 你減傷@#$%?(模糊模糊)
[R] 防戰: 啥?聽不清楚? 回音好大聲
[R] 術士: 你減傷幾啪
[R] 法師: 問你減傷幾啪
[R] 戒騎: 你減傷激巴
[R] 防戰: 你才積芭 ~所以最後減傷到底多少的某日Raiding~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
推
10/18 18:59, , 1F
10/18 18:59, 1F
→
10/18 19:01, , 2F
10/18 19:01, 2F
推
10/18 19:02, , 3F
10/18 19:02, 3F
→
10/18 19:05, , 4F
10/18 19:05, 4F
推
10/18 19:17, , 5F
10/18 19:17, 5F
→
10/18 19:18, , 6F
10/18 19:18, 6F
推
10/18 19:22, , 7F
10/18 19:22, 7F
好硬
推
10/18 19:22, , 8F
10/18 19:22, 8F
樓上正妹小香
推
10/18 20:34, , 9F
10/18 20:34, 9F
→
10/18 20:41, , 10F
10/18 20:41, 10F
※ 編輯: ak147 來自: 114.37.75.204 (10/18 21:11)
推
10/18 21:47, , 11F
10/18 21:47, 11F
推
10/18 21:47, , 12F
10/18 21:47, 12F
→
10/18 21:48, , 13F
10/18 21:48, 13F
→
10/18 21:49, , 14F
10/18 21:49, 14F
→
10/18 21:54, , 15F
10/18 21:54, 15F
推
10/18 21:59, , 16F
10/18 21:59, 16F
→
10/18 21:59, , 17F
10/18 21:59, 17F
推
10/18 22:10, , 18F
10/18 22:10, 18F
→
10/18 22:28, , 19F
10/18 22:28, 19F
推
10/19 13:08, , 20F
10/19 13:08, 20F