LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 384|回复: 1

[综合] 【搬运Wowpedia】事件Events(七)

[复制链接]
发表于 2023-7-11 13:18:56 | 显示全部楼层 |阅读模式
本帖最后由 懒动行不行 于 2023-7-11 01:41 PM 编辑

Frame

框架Frame(继承自RegionScriptObject,用CreateFrame创建)提供了与用户交互、注册和响应游戏事件的基础。


其他类型的衍生小部件,如FontStringsTexturesAnimations只能被附加到Frame或Frame的其他衍生工具上。


当一个插件需要响应游戏事件或状态变化而不需要可见组件时,这通常是使用Frame来完成的。显然,显示游戏信息(如威胁或冷却时间)且除了可拖动之外不能直接交互的组件就是典型的frame。它们也经常被用作组合其他相关框架的方法,要么是可见的(如天赋窗格将代表你角色天赋的按钮分组),要么是不可见的(如MultiBarRight将12个动作按钮分组)。

已被定义的方法
事件
Frame:RegisterEvent(event) - 当事件发生时注册通知.
Frame:RegisterUnitEvent(event,unit1 [,unit2]) - 当事件适用到特定单位时注册通知.
Frame:RegisterAllEvents() - 注册这个框架用以接收所有时间 (仅调试用!)
Frame:UnregisterEvent(event) - 指示这个框架在事件发生时不再被通知.
Frame:UnregisterAllEvents() - 指示当任何事件发生时,这个框架都不应收到通知.
Frame:IsEventRegistered(event) - 如果事件被注册到这个框架,则返回 true .

位置 & 可见性

FrameesaturateHierarchy(desaturation)
FramesableDrawLayer(layer) - 关闭指定的绘制层.
Frame:EnableDrawLayer(layer) - 开启指定的绘制层.
Frame:GetBoundsRect()
Frame:GetClampRectInsets() - 获取用于限制框架离开屏幕的修饰符.
Frame:GetDepth() - 如果适用,返回相对于其父节点的立体(3D)深度.
Frame:GetDontSavePosition()
Frame:GetEffectiveAlpha() - 返回框架的有效alpha值.
Frame:GetEffectiveDepth() - 返回绝对立体(3D)深度.
Frame:GetEffectivelyFlattensRenderLayers()
Frame:GetFlattensRenderLayers()
Frame:GetFrameLevel() - 返回该框架级别.
Frame:GetFrameStrata() - 返回该框架的层次.
Frame:GetHitRectInsets(l, r, t, b) - 获取框架的占据矩形的插入距离
Frame:GetMaxResize(w,h) - 返回框架允许的最大调整范围

Frame:GetMinResize([sw, h) - 返回框架允许的最小调整范围
Frame:HasFixedFrameLevel() : 布尔型

Frame:HasFixedFrameStrata() : 布尔型
Frame:IgnoreDepth(ignoreFlag)
Frame:IsClampedToScreen() - 如果禁止将框架拖出屏幕,则返回.
Frame:IsIgnoringDepth()
Frame:IsToplevel([) - 如果框架被设置为顶层返回.
Frameower() - 将这一框架置于其他框架下一层.
Frame:Raise() - 使这个框架在其他框架层级之上.Frame:RotateTextures(angleRadians [, pivotX, pivotY])
Frame:SetClampedToScreen(clamped) - 设置是否禁止框架帧拖出屏幕.
Frame:SetClampRectInsets(left,[size=90%] right, top, bottom) - 修改框架可能被拖出屏幕的程度.
Frame:SetDepth(depth) - 设置立体(3D)深度,如果适用,相对于它的父级.
Frame:SetDontSavePosition()
Frame:SetDrawLayerEnabled(layer, mouseOver)
Frame:SetFixedFrameLevel(bool)
Frame:SetFixedFrameStrata(bool)
Frame:SetFlattensRenderLayers(bool)
Frame:SetFrameBuffer(enabled) -控制框架是否呈现到它自己的框架缓冲区.
Frame:SetFrameLevel(level) - 将框架定位在其z轴间隔的一个细分内
Frame:SetFrameStrata(strata) -在z轴间隔内定位框架 .
Frame:SetHitRectInsets(left,[size=90%] right, top, bottom) - 设置框架占据矩形的插入距离.
Frame:SetMaxResize(maxWidth, maxHeight) - 设置此框架可调整为的最大尺寸.
Frame:SetMinResize(minWidth, minHeight) - 设置此框架可以调整大小的最小尺寸.
Frame:SetToplevel(isTopLevel) - 设置框架在点击时是否升起

子类
Frame:GetChildren() - 返回子框架作为多个返回值.
Frame:GetNumChildren() - 返回子框架的数目.
FrameoesClipChildren()
Frame:SetClipsChildren(clipped) - 设置框架裁剪其子类

区域
Frame:GetNumRegions() - 返回区域的数目.
Frame:GetRegions() - 返回区域.
Frame:CreateFontString() - 创建一个 FontString
Frame:CreateLine{) - 创建一个  Line
Frame:CreateMaskTexture() - 创建一个 MaskTexture
Frame:CreateTexture() - Creates a Texture

用户输入
Frame:EnableKeyboard(enableFlag) - 是否接收键盘输入.
Frame:EnableMouse(enableFlag) - 是否接收鼠标输入.
Frame:EnableMouseWheel(enableFlag) - 是否接收鼠标滚轮通知.
Frame:GetHyperlinksEnabled()
Frame:GetPropagateKeyboardInput() - 如果键盘输入传播则返回.
Frame:IsKeyboardEnabled() - 如果接收到键盘输入则返回.
Frame:IsMouseClickEnabled([) - 如果接收到鼠标点击输入则返回.
Frame:IsMouseEnabled() - 如果接收到鼠标输入则返回.
Frame:IsMouseMotionEnabled() - 如果收到鼠标进入/悬停通知,返回.
Frame:IsMouseWheelEnabled() -如果收到鼠标滚轮通知则返回.
Frame:IsMovable() - 如果框架可以移动则返回。
Frame:IsResizable() - 如果可以调整框架的大小,则返回.
Frame:IsUserPlaced() - 如果此框架已被用户重新定位,则返回.
Frame:RegisterForDrag(buttonType[,buttonType...]) - 指示框架监视鼠标拖动.
Frame:SetHyperlinksEnabled()
Frame:SetMouseClickEnabled()
Frame:SetMouseMotionEnabled()
Frame:SetMovable(isMovable) - 是否应该移动框架.
Frame:SetPropagateKeyboardInput(propagate) - 是否将键盘输入传播到其他框架.
Frame:SetResizable(isResizable) - 是否应该调整框架的大小.
Frame:SetUserPlaced(isUserPlaced) - 框架是否在布局缓存中是用户定义的.
Frame:StartMoving() - 开始移动这个框架.
Frame:StartSizing(point) - 使用指定的锚点开始调整此框架的大小.
Frame:StopMovingOrSizing() -停止移动和/或调整此框架的大小.
Frame:EnableGamePadButton(enabled)
Frame:EnableGamePadStick(enabled)
Frame:IsGamePadButtonEnabled()
Frame:IsGamePadStickEnabled()

属性
Frame:GetAttribute(prefix, name, suffix) - 返回与给定模式匹配的属性的当前值.
Frame:SetAttribute(name, value) - 在框架上设置属性.
Frame:SetAttributeNoHandler(name, value) - 在不触发OnAttributeChanged 脚本处理程序的情况下设置框架上的属性.
Frame:ExecuteAttribute(name [, ...])
Frame:CanChangeAttribute()
Frame:GetID( )- 返回框架的ID.
Frame:SetID(id) - 为框架设置一个ID.
背景


背景API在9.0.1补丁中被移动到 BackdropTemplate

Frame:GetBackdrop() - 创建并返回一个背景表,适合SetBackdrop使用
Frame:GetBackdropBorderColor(r, g, b, a) - 获取框架的背景边框颜色
Frame:GetBackdropColor(r, g, b, a) - 获取框架的背景颜色
Frame:SetBackdrop([backdropTable]) -根据提供的规格设置框架的背景.
Frame:SetBackdropBorderColor(r, g, b [, a]) - 设置框架背景边框的颜色
Frame:SetBackdropColor(r, g, b [, a]) - 设置框架的背景颜色。


已定义的脚本处理器
OnAttributeChanged(self, key, value) - 当框架属性改变时运行。
OnChar(self, text) - 对框架中键入的每个文本字符运行.
OnDisable(self) - 当框架被禁用时运行.
OnDragStart(self, button) - 当鼠标在框架中开始拖动时运行.
OnDragStop(self) -当在框架中开始拖动后释放鼠标按钮时运行,
OnEnable(self) - 当框架开启时运行.
OnEnter(self, motion) - 当鼠标光标进入框架的交互区域时运行.
OnEvent(self, event, ...) - 每当为该事件注册的事件触发时运行.
OnGamePadButtonDown
OnGamePadButtonUp
OnGamePadStickOnHide(self) - 当框架的可见性变为隐藏时运行.
OnHyperlinkClick(self, link, text, button, region, left, bottom, width, height) - 当鼠标单击FontInstance对象上的超链接时运行.
OnHyperlinkEnter(self, link, text, region, left, bottom, width, height) - 当鼠标移动到FontInstance对象上的超链接上时运行.
OnHyperlinkLeave(self) - 当鼠标从FontInstance对象上的超链接移开时运行.
OnKeyDown(self, key) - 当按下键盘键时运行,如果框架是键盘启用的.
OnKeyUp(self, key) - 当键盘键被释放时运行,如果框架是键盘启用的.
OnLeave(self, motion) -当鼠标光标离开框架的交互区域时运行.
OnMouseDown(self, button) - 当光标在框架上而按下鼠标按钮时运行.
OnMouseUp(self, button) - 当在框架中鼠标按下动作后释放鼠标按钮时运行.
OnMouseWheel(self, delta) - 当框架接收到鼠标滚轮滚动动作时运行.
OnReceiveDrag(self) - 当鼠标按钮在拖动到框架后被释放时运行.
OnShow(self) - 当框架变得可见时运行.OnSizeChanged(self, width, height) -当框架的大小改变时运行.
示例
用组件脚本((OnEnter OnLeave)创建一个简单的框架,以便在鼠标移到屏幕中间的纹理上时做出响应


[Lua] 纯文本查看 复制代码
local frame = CreateFrame("Frame", nil, UIParent)
frame:SetPoint("CENTER")
frame:SetSize(100,100)

-- 组件脚本
frame:SetScript("OnEnter", function()
        GameTooltip:SetOwner(frame, "ANCHOR_TOPRIGHT")
        GameTooltip:AddLine("HelloWorld!")
        GameTooltip:Show()
end)
frame:SetScript("OnLeave", function()
        GameTooltip:Hide()
end)

-- 添加一个纹理
local texture = frame:CreateTexture(nil, "BACKGROUND")
texture:SetTexture("interface\\icons\\inv_mushroom_11")
texture:SetAllPoints()


或者在XML文件中用<Frame> 元素


[Lua] 纯文本查看 复制代码
<Frame>
        <Size>
                <AbsDimension x="100" y="100" />
        </Size>
        <Anchors>
                <Anchor point="CENTER" />
        </Anchors>
        <Scripts>
                <OnEnter>
                        GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT")
                        GameTooltip:AddLine("HelloWorld!")
                        GameTooltip:Show()
                </OnEnter>
                <OnLeave>
                        GameTooltip:Hide()
                </OnLeave>
        </Scripts>
        <Layers>
                <Layer level="BACKGROUND">
                        <Texture file="interface\icons\inv_mushroom_11">
                                <Anchors>
                                        <Anchor point="TOPLEFT" />
                                        <Anchor point="BOTTOMRIGHT" />
                                </Anchors>
                        </Texture>
                </Layer>
        </Layers>
</Frame>

补丁变更

其他参见


参考文献






回复

使用道具 举报

发表于 2023-10-23 10:18:54 | 显示全部楼层
不给个赞,简直说不过去,这么费心学习和分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-5-2 05:38 PM , Processed in 0.044848 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表