懒动行不行 发表于 2023-7-11 09:43:04

【搬运Wowpedia】事件Events(六)

本帖最后由 懒动行不行 于 2023-7-11 09:44 AM 编辑

CreateFrame

创建一个框架对象。
frame = CreateFrame(frameType [, name, parent, template, id])
参数
frameType
字符串型(string) - 框架的类型; 例如"Frame" (框架)or "Button"(按钮).
name

字符串型(string) ? - 要分配给框架的全局可访问名称,如使用匿名框架则为 nil。
parent
框架(frame)?🔗 - 分配给框架的父框架, 如果没有则为 nil ; 不能为字符串. 也可以用 Region:SetParent()设置。
template
字符串型(string)? - 要继承的虚拟XML模板的逗号分隔列表; 也可见 FrameXML模版完整清单 。
id

数字类型(number)? - 分配给框架的识别号. 可以用 Frame:SetID()设置。
返回值
frame框架(Frame)🔗 - 已创建的框架对象或者某一个其他框架类型对象。
框架类型
在the XML schema {https://static.wikia.nocookie.net/wowpedia/images/5/53/Townlong-Yak_BAD.png/revision/latest/scale-to-width-down/14?cb=20200503043618⁠, https://static.wikia.nocookie.net/wowpedia/images/2/2e/GitHub_Octocat.png/revision/latest/scale-to-width-down/14?cb=20200503044311⁠}中可以获得框架的可能类型:

[*]Frame
[*]ArchaeologyDigSiteFrame
[*]Browser
[*]Button
[*]CheckButton
[*]Checkout
[*]CinematicModel
[*]ColorSelect
[*]Cooldown
[*]DressUpModel
[*]EditBox
[*]FogOfWarFrame
[*]GameTooltip
[*]MessageFrame

[*]Model
[*]ModelScene
[*]MovieFrame
[*]OffScreenFrame
[*]PlayerModel
[*]QuestPOIFrame
[*]ScenarioPOIFrame
[*]ScrollFrame
[*]SimpleHTML
[*]Slider
[*]StatusBar
[*]TabardModel
[*]UnitPositionFrame

细节
[*]如果从有一个继承模板,激发框架的 OnLoad 脚本。
[*]框架不能被删除或垃圾收集,因此最好重新利用。
[*]可以使用固有框架。

示例
[*]显示一个纹理,该纹理也是UIParent的父对象,因此它将具有相同的UI比例,并在使用Alt-Z切换时隐藏。
local f = CreateFrame("Frame", nil, UIParent)
f:SetPoint("CENTER")
f:SetSize(64, 64)

f.tex = f:CreateTexture()
f.tex:SetAllPoints(f)
f.tex:SetTexture("interface/icons/inv_mushroom_11")                                                                                                                                                                
                                                                                          
                                                                              
[*] 创建从UIPanelButtonTemplate继承纹理和组件脚本的按钮。
local btn = CreateFrame("Button", nil, UIParent, "UIPanelButtonTemplate")
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetScript("OnClick", function(self, button)
      print("You clicked me with "..button)
end)
[*]显示DisplayID的动画模型。
local m = CreateFrame("PlayerModel")
m:SetPoint("CENTER")
m:SetSize(200, 200)
m:SetDisplayInfo(21723) -- murloccostume.m2
[*]注册正在触发的事件,如聊天消息以及何时开始/停止移动。
local function OnEvent(self, event, ...)
      print(event, ...)
end

local f = CreateFrame("Frame")
f:RegisterEvent("CHAT_MSG_CHANNEL")
f:RegisterEvent("PLAYER_STARTED_MOVING")
f:RegisterEvent("PLAYER_STOPPED_MOVING")
f:SetScript("OnEvent", OnEvent)

补丁变更https://static.wikia.nocookie.net/wowpedia/images/0/0e/Bc_icon.gif/revision/latest?cb=20110218184702 Patch 2.0.1 (2006-12-05): 第4个参数, inheritFrame, 现在可以接受逗号分隔值.   
https://static.wikia.nocookie.net/wowpedia/images/3/38/WoW_Icon_update.png/revision/latest?cb=20180602175550 Patch 1.11.0 (2006-06-19): 新增第4个参数, inheritFrame.   
https://static.wikia.nocookie.net/wowpedia/images/3/38/WoW_Icon_update.png/revision/latest?cb=20180602175550 Patch 1.10.0 (2006-03-28): 新增.



其他参见
CreateFramePool()
参考文献
[*]^ https://static.wikia.nocookie.net/wowpedia/images/2/20/Blizz.gif/revision/latest?cb=20171007185539 slouken 2006-05-23. Re: Upcoming 1.11 Changes - Concise List. Archived from the original
[*]^ Iriel 2005-12-28. Upcoming 1.10 Changes - Concise List. Archived from the original






页: [1]
查看完整版本: 【搬运Wowpedia】事件Events(六)