作者ak147 (挨冬鎧兒)
看板WOW
標題[創作] UI簡易教學之二
時間Tue Oct 18 18:57:37 2011
在上篇以及之前的範例中
大家可以瞭解到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_DISABLE")
--註冊事件, 玩家不回血時觸發
f:SetScript("OnEvent",
--在事件觸發時執行以下script
function(self,
event)
--註2
if
event == "PLAYER_REGEN_DISABLE" then
--停止自動回血也就是進入戰鬥
print("進入戰鬥")
--在對話框顯示 進入戰鬥
elseif
event =="PLAYER_REGEN_ENABLE") 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)
推 HTRex:... 10/18 18:59
→ ak147:幹麻將...換頁對齊好難 10/18 19:01
推 VendeRox:看到有關程式語言的東西就濕了....... 10/18 19:02
→ ak147:其實就長一點的巨集... 10/18 19:05
推 look32019:... 10/18 19:17
→ alyh: 幹麻將...換頁對齊好難 XDDDDDD 10/18 19:18
推 look32019:你為什麼要幹麻將.... 10/18 19:22
好硬
推 ayaka0527:大家好 我是羅志祥 10/18 19:22
樓上正妹小香
推 stanwhale:喔喔 SetScript嘛 我小時候常常拿來玩呢 10/18 20:34
→ ak147:那第三篇OnUpdate就交給stanwhale了(逃跑 10/18 20:41
※ 編輯: ak147 來自: 114.37.75.204 (10/18 21:02)