下一页(2)

[Others][不是坑]LitePanels参考文档/LitePanels的layout_example.lua无脑翻译(6楼更新LP经典代码赏析)

[Others][不是坑]LitePanels参考文档/LitePanels的layout_example.lua无脑翻译(6楼更新LP经典代码赏析)


想学自己整合插件包啊……看到流星大的kgPanel的wiki里有一句“LitePanels将会成为主流”就跑去看……
当然是各种受挫= =b
为了方便后来者,正好自己闲着无聊,就把LitePanels的示例布局layout_example.lua中的注释简单翻译了一下。作者也说过参考文档就是这个示例布局的注释内容,所有的内容都可以在这里找到,所以也作为LitePanels的一个中文参考手册吧。

请所有想我一样想学习LitePanels的同学请注意,这不是一篇教程,基本完全无助于告诉你“如何使用LitePanel创建布局”。但是正如作者在文件中所说的,“在寻求帮助前请完整阅读参考文档中的说明内容”,所有LitePanels的基本应用已经完全包括在这个文档中了。至于更高级的事件编程,并不是LitePanels负责说明的内容(LP提供了非常灵活的接口)。

6楼放置了一些搜集来的LitePanels的经典应用、布局的代码,想找来参考的同学就不必挨个插件包翻有没有LitePanels了……话说当你好不容易翻到LitePanels的文件夹结果发现插件包作者只是拿它来让LiteStats正常工作的时候还是很受挫的= =b

OK,正文开始。有些地方因为原文档中使用的是tab,可能显示有些不正常……望见谅~
————————————————————————————————————————————————————————
  --[[
  LitePanels 1.5

  插件没有图形配置界面,这个文件包含了你的面板配置。
  把这个文件拷贝一份改名为layout.lua来开始你的工作。请使用UTF-8编码保存。
  
  语法和配置的例子将在文档末尾给出。大多数默认值可以在core.lua的开头找到。

  通常情况下,除了数字、true/false或者{列表}值之外的值,都需要加引号。
  比如父框架名,层,锚点,渐变方向,或者颜色的"r g b"字串等。

  如果你不理解下面的某个属性值,参考wowwiki的链接。

  === 框架属性 ===

  属性 [默认值] [url]http://[/url]参考链接
    描述。
  
  name [根据建立顺序产生的数字]
    为你的面板定义一个名称是非常有用的,当你想要书写脚本或者把它作为一个父框架的时候。
    未命名的面板将会根据它在配置文件中列出的顺序给定一个数字代码。如果你想调用一个面板
    的名字,你需要加上前缀'LP_'。比如:LP_GreenFrame 或者 LP_1

  parent ["UIParent"]
   标明你想将面板定位到的框架。面板将会继承parent属性指明的框架
    的大小和可见性(不是透明度)。

  anchor_frame [parent]
   设定面板的锚点框架。如果你既想保持父框架的可见性、大小、透明度等属性,又想将面板以
    另一个框架为基准定位的话需要使用这个属性。默认和parent指定的父框架相同。

  anchor_to ["BOTTOMLEFT"] [url]http://www.wowwiki.com/Widget_Anchor_Points[/url]
    锚定点在父框架的哪一侧(位置)。可选值参考wowwiki的相关内容。

  anchor_from [anchor_to 的值或者 "BOTTOMLEFT"] [url]http://www.wowwiki.com/Widget_Anchor_Points[/url]
    标明面板的哪一侧定位到上面标明的锚定框架的位置。

  require
    只有当某个插件被加载的时候才显示该面板。比如:{require="Dominos"}, 表示只有当Dominos
    动作条被加载的时候才显示该面板。
    这个属性也适用于“需要时加载”的插件。

  x_off [0] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    沿X轴移动的像素数(我需不需要多嘴说一句X轴是横向……)。负数向左,正数向右。

  y_off [0] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    沿Y轴移动的像素数。负数向下,正数向上。

  strata ["BACKGROUND"] [url]http://www.wowwiki.com/UITYPE_FrameStrata[/url]
    面板所在的UI层。可选值见wowwiki。

  level [1] [url]http://www.wowwiki.com/FrameLevel[/url]
    这是层内的一个z坐标层。如果一个层内有两个面板,该属性值高的一个将显示在另一个的
    上方。如果设为0则表示显示在父框架的后面。

  width [0] [url]http://www.wowwiki.com/API_Region_SetWidth[/url]
    面板的宽度,用像素或者百分比表示。比如:{width=110,}或者{width="100%",}
    如果设定了anchor_frame属性,百分比的属性值使用该框架的宽度而不是父框架的。

  height [0] [url]http://www.wowwiki.com/API_Region_SetHeight[/url]
    面板的高度,用像素或百分比表示。比如:{height=50,} 或者 {height="60%",}
    如果设定了anchor_frame属性,百分比的属性值使用该框架的高度而不是父框架的。

  bg_color ["0 0 0"] [url]http://www.wowwiki.com/API_Texture_SetTexture[/url]
    面板的背景颜色值,可设定为"r g b"的RGB值或者用"CLASS"表示职业颜色。
    数值必须在0到1之间,0和1之间的数值必须用10进制小数表示。
    比如:bg_color = "0 0.4 0.85",

    * 如果你需要在脚本中调用背景对象,它的名字是`LP_name.bg`。(name是面板的名字)
    * 如果存在背景图像,这个值会是图像的顶点颜色。
    
  bg_alpha [1.0] [url]http://www.wowwiki.com/API_UIObject_SetAlpha[/url]
    背景颜色或材质的透明度,用0-1之间的十进制小数表示,
    0是完全透明,1是完全不透明。

  inset [0或者border_size属性的1/4]
    背景收缩的像素数。如果是负的,就扩展背景,做出衬着的效果。如果设定了边缘,会自动调整自身的值。
    PS:就是说,如果设定了这个值,背景和面板边缘之间就会空出相应像素数的距离,而不是刚好填充满。
    例1:inset = -5 -- (等同于inset={top=-5,bottom=-5,left=-5,right=-5})
    例2:inset = {top=5,bottom=5} -- (等同于inset={top=5,bottom=5,left=0,right=0})

  border [false] [url]http://www.wowwiki.com/API_Frame_SetBackdrop[/url]
    该属性值定义边框材质文件的路径。如果设定为true,使用默认的材质路径
    ("Interface/Tooltips/UI-Tooltip-Border"),或者设定为一个不同的路径。
    例1:border = true -- 使用默认的边框材质
    例2:border = "texture" -- 如果texture.tga文件存在于'LitePanel/media/'文件夹下
    例3:border = "Interface\\AddOns\\SharedMedia\\border\\roth" --如果文件在别的地方
    例4:border = "SOLID" -- 做出一个纯色的边框,像素尺寸由border_size定义

  border_size [16] [url]http://www.wowwiki.com/API_Frame_SetBackdrop[/url]
    边框文件的像素大小,即边框厚度和边角的大小。(很显然和材质文件中各分片的大小有关)

  border_color ["1 1 1"] [url]http://www.wowwiki.com/API_SetBackdropBorderColor[/url]
    设定边框的颜色,使用"红 绿 蓝"的属性值,也可以用"CLASS"代表职业颜色。
    例1:border_color = "0.5 0.1 1.0"
    例2:border_color = "CLASS"

  border_alpha [1.0] [url]http://www.wowwiki.com/API_SetBackdropBorderColor[/url]
    边框颜色的透明度。1.0是完全可见,0.0是完全透明。

  gradient
    背景的渐变方向。"H"表示水平,"V"表示垂直。
    例1:gradient = "H"
    例2:gradient = "HORIZONTAL" -- 两者效果相同

  gradient_color ["1 1 1"]
    渐变的颜色。第一色使用bg_color,这里定义的是第二色。参见:bg_color。

  gradient_alpha [1.0 或者 bg_alpha] [url]http://www.wowwiki.com/API_UIObject_SetAlpha[/url]
    渐变背景颜色的透明度。这个值和bg_alpha是分离的。参见:bg_alpha。

  bg_blend [url]http://www.wowwiki.com/AlphaMode[/url]
    透明度混合方式,参见wowwiki的相关文档。
  
  PS:以上gradient开始的一系列属性用于定义渐变背景,如果用过PS或Flash之
    类的软件,应该明白渐变色的意思。
  
  tex_file ["Interface\\AddOns\\LitePanels\\media\\**tex_file**"]
    你想使用的材质的文件名。图像的宽和高必须是2的n次幂!(8,16,32,64,128等等)
    如果你将文件放到了插件文件夹下的media文件夹里,你可以直接指明文件名,否则要
    给出完整的路径。

  tex_coord [url]http://www.wowwiki.com/API_Texture_SetTexCoord[/url]
    高级属性,参见wowwiki的相关文档。
    例:{left,right,top,bottom} 或者 {ULx,ULy,LLx,LLy,URx,URy,LRx,LRy}

  tex_rotate [0]
    如果想旋转材质的话,这里给出转动的角度。(0-360)

  flip_h 以及 flip_v [false]
    如果 flip_h 或者 flip_v 设定为 true,材质将会水平或垂直进行翻转,
    h是水平,v是垂直。例:{flip_v=true,},

  mouse [false]
    设为true时,拦截框架上的鼠标点击,不存在点击穿透。
    如果在脚本中使用了以下几个事件,该属性值将自动设置为true:OnClick, OnMouseDown,
    OnMouseUp, OnDoubleClick, OnEnter, 或者 OnLeave。

  === 文字 ===
  要在面板中建立文本对象,使用以下的语法:
    
  { name = "SomePanel",
   text = {
   { attribute = value, attribute2 = value }, -- 文本对象
   { attribute = value, attribute2 = value }, -- 另一个文本对象
   },
  }
  
  * 可以看到,你可以在面板内建立任意多个文本对象。如果你只建立了一个文本对象,可以省略属性值
  外面额外的大括号。比如,下面的语法对单一文本对象的面板成立:`text = { attribute = value }`

  * 如果只建立了一个文本,文本对象的名称是`panel.text`。如果有多个文本对象,会根据建立的顺
  序命名为 text1,text2,text3,……等等。

  * 想快速的建立文本对象,可以使用`text = "字符串"`作为一个正常的框架属性值,文本将具有默认的
  格式。

  * 如果只有一个文本对象,它的宽高将和框架的默认宽高相同。

  === 文本属性 ===
  string [""]
    主要显示的文字。也可以是带有返回值的函数,默认情况下函数值将每秒钟更新一次。这个设置非常
    方便,这样你就不需要再写一个OnUpdate的脚本来调节了。
    例:string = "Buffs"
    例:string = function(self)
       self.tick = self.tick and self.tick + 1 or 0
       return self.tick
      end

  update [1]
    只有当字符串是一个函数的时候才需要这个属性。属性值的单位是秒,也可以使用十进制小数。例:
    update = 0.1 (十分之一秒)

  font ["Fonts/FRIZQT__.TTF"] [url]http://www.wowwiki.com/API_FontInstance_SetFont[/url]
    想要使用的字体的路径。放在LP的media文件夹下的字体可以直接给出文件名。
    例1:font = "font.ttf" -- 如果在'LitePanels\media\'文件夹下。
    例2:font = "Interface\\AddOns\\SharedMedia\\fonts\\ABF.ttf" -- 如果在别的地方

  size [12] [url]http://www.wowwiki.com/API_FontInstance_SetFont[/url]
    文字的字体大小。

  color [{1,1,1}] [url]http://www.wowwiki.com/API_FontInstance_SetTextColor[/url]
    文字的颜色。

  alpha [1.0] [url]http://www.wowwiki.com/API_FontInstance_SetTextColor[/url]
    文字的透明度,可用值为0.0-1.0。0.0是完全透明,1.0是完全不透明。

  outline [0] [url]http://www.wowwiki.com/API_FontInstance_SetFont[/url]
    文字描边的标志位。1是细描边,2是粗描边。设定描边会将阴影的默认值更改为0。

  shadow [1]
    设定阴影与文字之间的距离,单位为像素。例:`shadow = 1`
    默认的阴影形式是阴影的偏移量为:x = -y
    如果你需要对阴影的表现进行更多的控制,可以用`shadow = {属性 = 值}`的方式
    进行。可用的属性值有以下几种:
    :  x [1]
    :    阴影相对文字的x偏移量
    :  y [1]
    :    阴影相对文字的y偏移量
    :  color ["0 0 0"]
    :    文字阴影的颜色。
    :  alpha [1]
    :    文字阴影的透明度。

  mono [false] [url]http://www.wowwiki.com/API_FontInstance_SetFont[/url]
    文字单色的标志位。

  anchor_to ["CENTER"] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    锚定到面板的哪一个位置。

  anchor_from ["CENTER"] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    以面板的哪一侧来相对锚点定位。
    (似乎应该是“文字的哪一侧”,但是原文是panel)

  x_off [0] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    沿x轴移动的像素数。负数向左,正数向右。

  y_off [0] [url]http://www.wowwiki.com/API_Region_SetPoint[/url]
    沿y轴移动的像素数。负数向下,正数向上。
  
  PS:原文中y_off给出的是“x-axis”,x_off给出的是“y-axis”,不知是作者写反了还是本应如此。
    
  justify_h ["CENTER"]
    设定文字的水平对齐方式("LEFT"左对齐,"RIGHT"右对齐,或者"CENTER"居中)
  
  justify_v ["MIDDLE"]
    设定文字的垂直对齐方式("TOP"上对齐,"BOTTOM"下对齐,或者"MIDDLE"居中)
  
  === 职业颜色 ===
  所有的颜色属性都可以很轻易的按照职业进行着色。不需要使用标准的"r g b"形式,可以
  直接使用"CLASS"
  例:bg_color = "CLASS", gradient_color = "CLASS", border_color = "CLASS"

  完整的职业颜色列表和其实际颜色值,参见[url]http://www.wowwiki.com/Class_colors[/url]

  === 高级:脚本属性 ===
  脚本属性和常规属性采用同样的方式定义,但是它们必须设定一个针对该时间的函数。

  目前支持的事件句柄:
    OnClick, OnDoubleClick, OnMouseUp, OnMouseDown, OnEnter, OnLeave, OnUpdate,
    OnResize, OnLoad, OnEvent, OnHide, OnShow

  * 这些句柄的具体作用参见wowwiki的相关内容。[url]http://www.wowwiki.com/Widget_handlers[/url]

  * 当使用OnUpdate脚本的时候,你可以在调节中使用预定义的变量`self.elapsed`:
  OnUpdate = function(self, u)
   self.elapsed = self.elapsed + u
   if elapsed > 3.0 then
   -- code to run every 3 seconds
   self.elapsed = 0
   end
  end

  * 如果为多个句柄定义变量,最好使用 self.变量名 的方式,在OnLoad句柄中进行定义:
  OnLoad = function(self)
   self.clicks = 0
  end,
  OnClick = function(self, button)
   self.clicks = self.clicks + 1
   print(self.clicks, button)
  end

  -------------------------------------------------------------
   编辑这个布局,保存,然后键入"/reload"来查看变化。

   在寻求支持前请完整阅读上面的文档。
  -------------------------------------------------------------
]]

------------------------------------------------------------------------------------------
-- API: lpanels:CreateLayout("Layout Name", { _layout code_ }, { _viewport_ })
--  创建布局。
--  » 参数1 - 布局名称。随你怎么写。
--  » 参数2 - 表或者对你的布局代码的调用(= =就是布局代码……)
--  » 参数3 - 检视区的表(可选)。 比如:{top=10, bottom=100, left=5, right=5}或者{bottom=100}

[code=lua]lpanels:CreateLayout("Load For All", {
  -- 在这里建立一个全局的布局
  
})[/code]

--------------------------------------------------
-- 示例布局,你可以修改也可以删除。 --
--------------------------------------------------

[code=lua]lpanels:CreateLayout("Simple Viewport", {
  -- 主检视区背景
  {  name = "GreyBox",
    strata = "BACKGROUND", level = 0,
    x_off = 0, y_off = 0,
    width = "100%", height = 125,
    bg_color = "0.1 0.1 0.1", bg_alpha = 1,
    text = {
      string = "Your Viewport, Sir!",
      size = 10, outline = 1,
    },
  },
  -- 定位在检视区区域上方的与职业颜色相同的边缘。
  {  name = "TopBorder", parent = "GreyBox",
    anchor_to = "TOP", y_off = 1,
    width = "100%", height = 1,
    bg_color = "CLASS", bg_alpha = 0.5,
  },
}, { bottom = 125 }) -- 可选的检视区配置

lpanels:CreateLayout("Chat Background", {
  -- 左侧聊天框的背景。
  {  name = "Chat", parent = "GreyBox",
    width = 300, height = "100%",
    bg_color = "0 0 0",
  },
  -- 右侧战斗记录的背景
  {  name = "Combatlog", parent = "GreyBox",
    anchor_to = "BOTTOMRIGHT",
    width = 300, height = "100%",
    bg_color = "0 0 0",
  },
  -- 聊天框右侧的边线
  {  name = "ChatBorder", parent = "Chat",
    anchor_to = "RIGHT",
    width = 1, height = "100%",
    bg_color = "CLASS", bg_alpha = 0.5,
  },  
  -- 战斗记录左侧的边线
  {  name = "CombatlogBorder", parent = "Combatlog",
    anchor_to = "LEFT",
    width = 1, height = "100%",
    bg_color = "CLASS", bg_alpha = 0.5,
  },
})[/code]

  ------------------------------------------------------------------------------------------
-- API: lpanels:ApplyLayout("n:Character r:Realm c:Class", "layout1", "layout2", "layout3")
-- 加载布局。
-- » 参数1 - 配置文件字串:可以设定为任何的以下形式的组合 n:角色名, r:服务器名, c:职业,
--  使用一个空格分隔开。如果设为nil,则将布局加载给所有角色。另外,条件前加连字符"-"
-- 表示布局在该名字、服务器或职业上不启用。配置文件字串不区分大小写。服务器名中含有
--  空格的必须去除。
-- » 参数2,... - 需要加载在该配置文件的布局名称,即CreateLayout()创建时使用的名称。不限
--    制每配置文件加载的布局数量。

[code=lua]lpanels:ApplyLayout(nil, "Load For All")
lpanels:ApplyLayout("n:batman", "Simple Viewport", "Chat Background")[/code]

--[[
  --- 更多加载配置文件的例子 ---
  [1] 在除了名叫Holynovaz的牧师之外所有的牧师下加载名为'priesty'的布局。
    lpanels:ApplyLayout("c:priest -n:holynovaz", "priesty")

  [2] 除了战士之外,所有的职业都加载'not warrior'布局:
    lpanels:ApplyLayout("-c:warrior", "not warrior")

  [3] 在服务器Blackwing和Mal'Ghanis的所有角色、所有服务器上名为Ohhai的角色上加载名为'layout1'
    和'layout2'的布局:
    lpanels:ApplyLayout("r:blackwinglair r:mal'ghanis n:ohhai", "layout1", "layout2")

  [4] 在Hyjal服务器上所有的萨满、所有服务器上名为Lolcoil的角色上加载名为'bars'和'minimap'的布局:
    ApplyLayout("n:lolcoil (r:hyjal c:shaman)", "bars", "minimap")

  [5] 在服务器Anvilmar上的Huntz角色、所有的战士角色上加载名为'overlay1'和'overlay2'的布局:
    lpanels:ApplyLayout("(n:huntz r:anvilmar) c:warrior", "overlay1", "overlay2")
]]  
——————————————————————————————————————————————————————————
文件结束。

顺带着我也把core.lua中的注释也全翻译了(工作量很小……),全注释翻译完成的LitePanels插件包放在下面,有希望研究LitePanels的运作原理,或者觉得上面的排版有问题的同学请下载并使用Notepad++采用lua语法高亮进行查看。下面的包里使用的LitePanels版本是1.5,适用于WOW3.3.x


附件

改动



很不错.
比三小三大大简单的教程比较.这个的实用性还是挺高的.


[quote][pid=66604422][b]Post by ongabc (2011-01-22 21:31):[/b][/pid]

很不错.
比三小三大大简单的教程比较.这个的实用性还是挺高的.[/quote]

如果三大人能够把坑填了的话,更适合做教程。这个只能说参考价值很高,呵呵


KGP 我还没搞明白呢 这个....


好貼留名...
其實我一直搞不懂這兩個除了設置方法不同外,其他的能實現的效果有什麽不同...= =


我现在一直在用这个,很好用.

贴几个样例代码


今天翻了翻LitePanels在WOWInterface论坛上的帖子,有很多不错的样例代码也摘下来和同志们分享一下。对于理解LitePanels的作用非常有帮助。如果英文不存在障碍的话,强烈建议都去读读[url=http://www.wowinterface.com/forums/showthread.php?t=25283]LitePanels的讨论帖子[/url],各种提出的问题作者Katae都有耐心的解答,非常不错。(相比较oUF的整一个版面当然就大有不如了……)
===1.信息条(纯由LitePanels构成,没有使用LiteStats)===
下面这些话是原作者Katae说的:

我先展示一些我使用的代码。下面这个是我用来做信息条的布局代码,你可以直接粘贴到你的默认布局中使用。这段代码也演示了内置的职业着色系统。
如果你只想使用这个渐变颜色的盒子,你可以把名为“Stats”的面板去掉,然后调整位置、大小和颜色。

[img]./mon_201101/23/200_4d3c261b1ba71.jpg[/img]
[code=lua]lpanels:CreateLayout("Stats", {
-- 信息条容器
{ name = "Container",
anchor_to = "TOP",
width = 280, height = 20,
x_off = 0, y_off = -30,
bg_alpha = 0,
},
-- 盒子左侧部分
{ name = "BoxL", parent = "Container",
anchor_to = "LEFT",
width = "50%", height = "100%",
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0, gradient_alpha = 0.2,
},
-- 右侧部分
{ name = "BoxR", parent = "Container",
anchor_to = "RIGHT",
width = "50%", height = "100%",
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0.2, gradient_alpha = 0,
},
-- 顶部左侧的渐变线条
{ name = "LineTL",
parent = "BoxL", anchor_to = "TOP",
width = "100%", height = 1,
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0, gradient_alpha = 0.8,
},
-- 顶部右侧渐变线条
{ name = "LineTR",
parent = "BoxR", anchor_to = "TOP",
width = "100%", height = 1,
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0.8, gradient_alpha = 0,
},
-- 底部左侧
{ name = "LineBL",
parent = "BoxL", anchor_to = "BOTTOM",
width = "100%", height = 1,
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0, gradient_alpha = 0.8,
},
-- 底部右侧
{ name = "LineBR",
parent = "BoxR", anchor_to = "BOTTOM",
width = "100%", height = 1,
gradient = "H",
bg_color = "CLASS", gradient_color = "CLASS",
bg_alpha = 0.8, gradient_alpha = 0,
},
-- 文字显示部分
{ name = "Stats", parent = "Container",
anchor_to = "CENTER", anchor_from = "CENTER",
text = {
string = function()
-- 钱
local gold = format("%.1f|cffffd700g|r",GetMoney()/10000)

-- 耐久度
local durability = 100
for i = 1, 11 do
if GetInventoryItemDurability(i) ~= nil then
local dur, max = GetInventoryItemDurability(i)
local perc = dur / max * 100
if perc < durability then
durability = floor(perc)
end
end
end

-- FPS
local fps = floor(GetFramerate())

-- 内存
local memory = 0
UpdateAddOnMemoryUsage()
for i = 1, GetNumAddOns() do
if IsAddOnLoaded(i) then
memory = memory + GetAddOnMemoryUsage(i)
end
end
memory = format("%.1f", memory/1024)

-- 延迟
local latency = select(3,GetNetStats())
-- 返回文字的整体
return format(":: %s :: %s%%dur :: %sfps :: %smB :: %sms ::", gold, durability, fps, memory, latency)
end, update = 1,
size=10, shadow=1, font = "Fonts\\FRIZQT__.TTF",
}
}
}); lpanels:ApplyLayout(nil, "Stats")[/code]

===2.AFK“插件”===
原作者利用LitePanels自带的功能实现的简单的“插件”。功能是当玩家AFK的时候弹出提示框提醒并开始计时,点击后提示框消失。
这个例子展现了LP强大的扩展能力啊……

[code=lua]lpanels:CreateLayout("Afker", { --这里定义了AFK时弹出的提示框的具体样式
{ name = "AFK", anchor_to = "TOP", y_off = -210,
bg_alpha = 0.5, width = 200, height = 75,
border = "SOLID", border_color = "1 1 0",
text = {
-- 显示"YOU ARE AFK!"
{ string = "You are AFK!", anchor_to = "TOP", y_off = -10,
shadow=1, font = "Fonts\\FRIZQT__.TTF", size=14,
},
-- "0:00" 计时器
{ string=function()
if afk_timer then
local secs = mod(time() - afk_timer, 60)
local mins = floor((time() - afk_timer) / 60)
return format("%s:%02.f", mins, secs)
end
end, update=0.1,
shadow=1, font = "Fonts\\FRIZQT__.TTF", size=16,
anchor_to = "CENTER", color = "1 0.3 0.3"
},
-- 显示"RIGHT CLICK TO HIDE",右键点击消失。
{ string="Right click to hide.", anchor_to="BOTTOM", y_off = 10,
shadow=1, size=8, font = "Fonts\\FRIZQT__.TTF",
}
},
OnLoad = function(self) --OnLoad,当载入时,将该面板隐藏,同时注册事件“PLAYER_FLAGS_CHANGED”(应该是玩家状态发生改变的意思吧)
self:RegisterEvent("PLAYER_FLAGS_CHANGED")
self:Hide()
end,
OnEvent = function(self) --OnEvent,此处指当上面注册的事件发生时执行。判断是否AFK,若AFK则将计时器重置并显示面板。
if UnitIsAFK("player") and not afk_timer then
self.text2:SetText("0:00")
afk_timer = time()
self:Show()
elseif not UnitIsAFK("player") then
self:Hide()
afk_timer = nil
end
end,
OnClick = function(self, b) --点击隐藏。若为左键点击则同时发出“AFK”的聊天消息。
self:Hide()
if b == "LeftButton" then SendChatMessage("", "AFK") end
end,
OnEnter = function(self) self.bg:SetTexture(.1,.1,.1,.5) end, --OnEnter和OnLeave是鼠标移入/移出面板时发生的事件,调整面板外观。
OnLeave = function(self) self.bg:SetTexture(0,0,0,.5) end
}
}); lpanels:ApplyLayout(nil, "Afker")[/code]

附件

改动



唔 希望这个帖子能给界面开发者提供有用的帮助

实际上litepanel的代码给人的感觉有点像纯流式布局的HTML(带javascript的)

熟悉了elements的属性和行为的话对这个API的理解会相对轻松很多


[quote][pid=66633059][b]Post by 消逝的流星 (2011-01-23 22:44):[/b][/pid]

唔 希望这个帖子能给界面开发者提供有用的帮助

实际上litepanel的代码给人的感觉有点像纯流式布局的HTML(带javascript的)

熟悉了elements的属性和行为的话对这个API的理解会相对轻松很多[/quote]
确实像HTML……特别是Div+CSS类型的页面,跟LitePanels的设计思路基本完全一样。

多谢流星大的支持~~~ [s:25]


楼主好人啊,正在试用LP,收藏了好好学习 [s:27]


如何在里面添加邮件代码,谢谢如何在里面添加邮件代码,谢谢 、、
类似local gold = format("%.1f|cffffd700g|r",GetMoney()/10000)显示金钱的,谢谢了


mark........


有没有大大帮忙呢


想问下这创建的名称能用中文的吗?


回qinghe,在返回文字整体的前一行加上一句“[del]local mail=function() return (HasNewMail() and "New mail!" or "No mail") end[/del]local mail=(HasNewMail() and "New mail!" or "No mail")”然后把mail这个变量放到下面字串中合适的位置。

手机党渣排版,代码我没有试过。如果需要信息条功能,建议使用LiteStats。

多谢Lostpigz的指正~
------------
回楼上,可以,但是记得要保存为UTF-8编码的文件

改动



楼上的实验报错..format无法转换mail,应该是因为mail被定义成函数的关系...
其实这样就可以了吧...
local mail=(HasNewMail() and "New mail!" or "No mail")


多谢楼上指正~


[quote][pid=66659628][b]Post by zodiacg (2011-01-24 16:21):[/b][/pid]

回qinghe,在返回文字整体的前一行加上一句“local mail=function() return (HasNewMail() and "New mail!" or "No mail") end”然后把mail这个变量放到下面字串中合适的位置。手机党渣排版,代码我没有试过。如果需要信息条功能,建议使用LiteStats。------------回楼上,可以,但是记得要保存为UTF-8编码的文件[/quote]
谢了 在上班 本来打算回去改个中文试试的 呵呵 最近一直在看这方面的帖子 受教了


[quote][pid=66660645][b]Post by 呆呆的看着你 (2011-01-24 16:44):[/b][/pid]

谢了 在上班 本来打算回去改个中文试试的 呵呵 最近一直在看这方面的帖子 受教了[/quote]

呵呵,指教不敢当,我也只是了解了皮毛 [s:2]


mark 字数.exe
下一页(2)