首 页 | 技术文章 | 魔兽视频欣赏 | 魔兽新闻 | 魔兽官方新闻 | 魔兽国际新闻 | 魔兽国内动态 | 任务副本攻略 | 战场战术 | 职业心得 | 专业技能 | PvP研究
 

· 技术研究
· 魔兽职业功略
· 魔兽新闻
· 魔兽攻略大杂烩
· 魔兽精美壁纸
· 模仿Stuck界面UI包 ..
· 任意修改你的wow字體..
· 如何将自身种族显示..
· [猎人]用DAB来简化你..
· DAB使用入门 12月5日..
· DAB3.0使用心得
· [翻译]一个超强的Fl..
· WOW创造了ADDONS,A..
· CT_RaidAssist 1.41..
· 无限可能的FLEXBAR(..
· FlexBar实现鼠标跟随..
· DiscordMacroFuncti..
 
 
FlexBar 1.37+帮助中英文对照版(不包含参数列表)
作者:佚名  来源:不详  发布时间:2006-6-24 17:23:17  发布人:admin

减小字体 增大字体

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
作者的话
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Contacting Me
联系我
While my web-site is temporarily down, when it is back you can ask for help at http://therealorang.com/forums, or at the Blizzard UI Forums(http://forums.worldofwarcraft.com/board.aspx?fn=wow-interface-customization). I am no longer including an email address as the one I included in previous docs ended up being spammed into uselessness.
由于我的个人网站暂时关闭了,所以你可以在这里获得帮助(http://therealorang.com/forums)或者暴雪官方的UI论坛(http://forums.worldofwarcraft.com/board.aspx?fn=wow-interface-customization)。我这个版本的说明文档不再包含电子邮件地址,我先前说明文档里面的电子邮件地址也已经失效了。

While these docs are by no means perfect, I have taken a lot of time compiling them. If you have questions, please read the FAQ first and scan through the commands/events etc. appendices. I only have a limited amount of time and I do get a little tired of answering questions answered in here -- it makes me wonder why I took the time to write the docs which are no where near as much fun as coding.
当然,这些说明文档并不是完美的,但是我花了很长时间来写它们。如果你有问题,现读FAQ(问答)部分,然后从命令/事件附录中找答案。我现在时间很少,并且有些厌倦回答问题,这让我多少有些怀疑为什么我花了这么多时间来写这些说明文档而不是写那些有意思的代码……

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
新版本改进(1.37+)
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Changes from 1.36 to 1.37
1.36以下版本相对于1.37+版本的区别:

Introduction: I realize it's a pain when I change structural details in FlexBar and you have to change your setups. I give a lot of thought to these things before doing it. Please remember I still consider FlexBar to be Alpha Software. Until I am satisfied with the feature set (not until pet buttons at least) and satisfied with a low enough number of known issues will I move it to beta status. Once I do that I will be even more reluctant to change things like these. Until then, these changes were necessary to allow me to keep extending it without working around poor design decisions made early on.
简介:我意识到当我重新构建Flexbar的时候你需要改变设置是十分痛苦的事情,我在作这个改版之前想了很多这类事情。请注意,我认为Flexbar目前版本还是Alpha测试版本,直到我对于特性设置(不会是对宠物按钮)感到满意并且已知问题数量控制到一个很低的水准,我才考虑进入Beta测试版状态。一旦那样干,我更没有精力来改这些东西,到那时,这些改变对于让我持续开发扩展是必要的,但不是在早前很草率的设计构架之上。

Buttons Above 72: Prior to this, there were 96 buttons, and the buttons above 72 did NOT have a 1-1 mapping of default ID to button number the way buttons 1-72 did. In order to fix this, I have increased the number of buttons to 120 and now there is a 1-1 mapping of default ID to button #. That means that, before you remap anything, button 73 has ID 73, button 88 has ID 88 and so on.
大于编号72的按钮:早先,一共有96个按钮,并且大于72号的按钮与默认ID不是如同1-72号按钮般一一对应的。为了修复这个问题,我把按钮数量增加到了120个,现在默认ID与按钮标号是一一对应的了。

What this means for prior users - The apparent location of your abilities on buttons 73-96 will move. Abilities that were on 85-96 will now be on 109-120. For all but warriors and druids, abilities that were on 73-84 will now be on 97-108. If you had abilities on these buttons and you were just remapping to them, then no change needs to be made as they are still at the same ID. If you were displaying those buttons and not remapping to them, just display the new buttons, drag the abilities to the old buttons and you're done. Finally if you were both displaying those buttons and remapping to those ID's - you will have to move the abilities back to the old buttons, and change and remapping commands to reference the new ID's.
这意味着,对于早期版本用户(1.36版之前)73~96号按钮对应的你的技能将移动。85~96号按钮对应的技能将移至109~120,对于非战士和德鲁依的角色,73~84的按钮移动到了97~108。如果你有技能在这些按钮上,你只需要Remap(映射)他们就可以了(指的是你把这些按钮上的技能已经用remap命令映射到73以下的按钮上了),不需作其他改动(因为有相同的ID)。如果你正在显示这些按钮并且没有映射他们,只需要显示新按钮,然后把技能拖拽到老的按钮上就可以了。最后,如果你正在显示并且已经映射了这些ID,你需要把这些技能移回老按钮,然后再改,然后再重新映射命令来获得新的ID。

SetTexture: SetTexture used to set the texture by button #. This has changed to setting the texture by ID #. This is to facilitate the new features flexmacro/flexscript/autoitems. While you can still set on events - this ability is mainly for flex-actions (and later pet buttons).
设置文字标签:现在文字标签用ID号来对应,而不是按钮号。这样将使新的特性flexmacro/flexscript/atuoitems更加容易编辑。当如你还是可以在事件中设置按钮,这个功能只要是为了flex动作(还有之后的宠物按钮)。

/wait command:   Has been changed to /fbwait to avoid replacing /wait voice emote.
/wait命令:把/wait命令换成了/fbwait命令,防止替换/wait声音表情。

Extending FlexBar: The way you hook into WoW events has changed - please read that section.
FlexBar扩展:WOW事件钩子更改,请阅读那个部分。

IsUsable: While this isn't my change, it warrants a word. In interface version 1.4 of WoW, Blizzard change the return value of IsUsableAction. Originally it only indicated that a prerequisite event had happened, (dodge for overpower, parry for riposte etc.). Now it indicates that : A prerequisite event has happened, you are in the correct stance, you have enough mana/rage/energy and it is out of cooldown. If you are a stance dancing warrior who used macros that changed to battle-stance (if you weren't in it) then cast overpower (on the next press) and were used to using isusable to light up/show your buttons when you were not in the correct stance, this will no longer work.
IsUsable(函数):这不是我改的,我保证。在1.4.x的魔兽世界界面里,暴雪更换了IsUsableAction的返回值。原本它只指出一个先决条件已经具备(比如:压制的先决条件躲避,回刺的先决条件格挡等)。但是现在它指出:一个先决条件已经具备,你处于正确的姿态,你有足够的魔法/射程/怒气/精力,该魔法不处于冷却状态。如果你是一个状态切换狂战士,用宏先切换到战斗姿态(如果不在该姿态)然后发出了压制(第二步)然后想要像以前一样在不正确的姿态里显示你的按钮,是不行的。

For now, use the new On='TargetCombat' Target='Dodge' to capture this and use a timer to hide the button and an On='CooldownStart' to hide it.
现在,你可以用新的命令:On='targetCombat' Target='Dodge'来这样使用,然后用一个计时器隐藏按钮,或者用一个On='CooldownStart'(事件)来隐藏它。

This isn't the definitive answer, but it is the best I have atm I'm afraid.
这并不是权威性答案,但是这恐怕是我的最终答案。

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Flexbar特性介绍
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Introduction: Flexbar provides 120 buttons that can be moved, scaled, shaded, hidden, shown and alpha blended completely independently of one another. This allows you to put just as many buttons as you need, just where you need.
介绍:Flexbar提供120个按钮,这些按钮可以被单独的移动,缩放,设置透明度,隐藏,显示和alpha混合,这将允许你自有的设置按钮。

In additon to basic extra bar functionality, FlexBar employs an event (think trigger) / action (command) architecture. It is constantly keeping track of the status of a wide number of things from your buffs to your health to whether you have a target or not. When it detects a change in these it raise an event that you can have a command respond to - such as showing your overpower button when your opponent dodges.
除了基本的扩展bar功能模块外,Flexbar还增加了一个事件(可根据情况判断地触发器)/动作(命令)系统。它实时的监控你的近乎全部状态,从你的Buff、你的健康(血量,魔法值)到你是否有一个目标。如果一旦发现了这些量发生改变,它会启动一个事件来让你选择命令来应对,比如:在你躲避成功后显示压制按钮。

Additionally FlexBar provides some extras that just came with the territory:
此外Flexbar还提供一些扩展的工具:

Extra macros/scripts beyond the limit of 18 with a character limit of 10240 (nearly limitless if you break your scripts into preloaded functions).
扩展的宏/script,超过18条限制,字符数达到了10240个(近乎无限,只要你把你的脚本拆分到预载入函数,FlexBar_Config.lua中自己定义)

AutoItems - makes it so, when you run out of a potion that was on a button, the icon stays there, and when you get more, it automatically puts them back on.
自动物品:当你的某个按钮中的物品用完了之后,按钮还保持在那里(不是自动消隐掉),当你又有的时候,物品自动到按钮中。

Extra macro commands (these were 5 line bonuses that just expose some things that flexbar already had in it)
扩展宏命令(有额外的5行来显示flexbar已经有的东西)

    /fbuse Item -- uses an item by name from your inventory
    /fbuse Item -- 使用一个背包内的物品(物品名字)

    /fbdoin delay /command -- delays execution of a macro command for delay tenths of a second
    /fbdoin delay /command -- 延时执行一条宏命令(1/10秒计算)

    /fbcast -- like cast but will cast pet spells, stances etc. Also, if you omit the rank it uses the highest rank of that spell.
    /fbcast -- 和施法一样,但是释放的是宠物技能或者状态等。当如,如果你忽略了射程设置,将直接使用最大射程。

    /echo #color message -- echos a message above your character's head in the specified color (white, green, red, blue, cyan, yellow, magenta). Omitting color makes it white.
    /echo #color message -- 在你的人物头顶以特定颜色(白、绿、红、蓝、青、黄、洋红)显示一条信息,默认颜色为白色。

    /print #color message -- like echo but writes the message to your chat box.
    /print #color message -- 和echo一样,但是信息输出到聊天窗口(频道窗口)。

  A Note on Performance: On my low end system (1.1 GHZ Celeron, 512MB, GF2 MX400) - without any mods I get 21FPS at the tower of Azora facing the road. With FlexBar installed with 120 buttons showing and a couple of events (not many), and Auto Performance Options checked I get 20. With more events this might go lower, but it shouldn't be much. On the memory side, it may show temporary drain during configuration, but the amount of that that goes on in normal play is low and will not force the Lua environment to frequently garbage collect.
  性能提示:在我的低配置机器(1.1GHz 赛扬,512MB内存,GF2 MX400显卡)上,不运行任何插件,可以在Azora塔面对道路的时候到21FPS。安装FlexBar之后,显示120个按钮并且建立了一些事件(不是很多),用Auto Performance Options测得的结果是20。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Flexbar的安装
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Installation: If you have already installed FlexBar, skip this.
安装:如果你已经安装了FlexBar,跳过这一段。

If this is the first time you've installed a mod, there are a couple of preparatory steps to take:
如果这是第一次你安装一个插件,要先作些准备工作:

1. Find your World of Warcraft\ directory, inside it, if there is not a directory name Interface, create it.
1. 找到你的World of Warcraft文件夹,看看里面有没有Interface文件夹,如果没有,创建一个。

2. Inside the Interface\ directory, create a directory named Addons.
2. 进入Interface文件夹,创建一个Addons的文件夹。

NOTE: A common mistake is to put Addons in the World of Warcraft\Data\Interface\Addons directory, this is not correct.
提示:一个普遍地错误是把Addons文件夹放到World of Warcraft\Data\Interface文件夹下面,这是错误的。

3. Unzip FlexBar, put the entire folder in the addons directory. You should now have a directory that looks something like (mine is on my D drive) D:\\World of Warcraft\Interface\Addons\FlexBar.
3. 解压Flexbar,然后把整个文件夹反倒Addons目录下。(如果你的World of Warcraft文件夹在D盘,应该是这样的目录结构D:\World of Warcraft\Interface\Addons\Flexbar)

4. Log in, check the Addons GUI (see the button at the bottom left of the character screen) and verify that FlexBar is installed and enabled.
4. 登入WoW,检查插件选项(在人物选择界面的左下角)看看Flexbar是否已经安装和允许加载。

5. If, for any reason after a patch FlexBar does not load because it is out of date, check the "Load out of date addons" box in the Addons GUI - DO NOT edit the .toc as some people will tell you. This is a sure way not to know what addon is causing trouble after a patch.
5. 如果,不管什么原因,在一个升级补丁打了之后,Flexbar由于过期不能加载了,选择插件选项里面的"加载过期插件",最好不要自己更改.toc文件,因为这是让你发现是因为版本升级造成的插件问题的唯一方法。(其实如果你确定这个插件没有问题,而且不想选择"加载过期插件"选项,就把.toc文件里面的版本号,如4216、5526之类的改成1300,这样就不会出那个版本过期的显示。)

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Flexbar基础知识
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Getting Started: A New FlexBar installation starts with all buttons hidden, in a grid 12 buttons wide by 10 buttons tall.
开始:一个新的Flexbar安装之后,所有的按钮都是隐藏的,在屏幕中央,一个12×10的按钮组。

The first thing to do is to display a few buttons to play with: (note: all these commands are covered in depth in the Commands appendix - including all parameters)
你要做的第一件事情就是显示你需要的按钮:(提示:所有的命令都可以在命令列表里面查到用法,包括参数)

/flexbar show button=1-12

will do the trick.
将完成这个。

Now, so you know which is which:
现在,你要知道哪个按钮是什么:

/flexbar text button=1-12 text='%d'

You'll note (if you're not a warrior) that the actions on these buttons duplicate your default action bar page 1 - this is normal and is a result of the way WoW allocates Button ID's.
你将会注意到(如果你不是一个战士)和你的默认动作条第一页一样,这是正常的,这也是WOW分配按钮ID的结果。

Now, the initial location is not where you want it, so look to the top left corner of the button, click on the little handle you see there and drag the button around.
现在,可能它的初始位置不在你想要的地方,看看它(按钮)的左上角,有一个小把手,点到上面(不要放手),把按钮拖到你想放的地方。

Once you have them where you want them, you'll often want them to stay put - /flexbar lock button=1-12 will make them unable to move.
一旦你拖动到了你想放的地方,并且你不想再移动了,用/flexbar lock button=1-12来固定它们。

Sometimes you want the buttons to stay put relative to one another and to drag them as a group:
有时候你想要按钮之间保持相对位置,并且作为一组来拖拽:

/flexbar group button=1-12 anchor=1

Now you can drag the entire group as a whole by button 1's anchor.
现在你可以用1号按钮的锚(小把手)来拖拽整个组。

Also, sometimes dragging individual buttons is a pain, so :
当然,有些时候拖拽单个按钮是十分痛苦的。

/flexbar verticalgroup group=1 width=6

will make that group a 2 button high, 6 button wide bar.
这将会构建一个2×6的动作条(两行,每行6个按钮)

Take a look in the command appendix at the appearance, group and movement commands for further details.
参阅命令附录可以对外观,组,移动命令有一个更深的了解。

If all you need is a few extra bars where you need them, that's all you need to know - but there's more :) See the advanced topics.
如果你仅仅是要一些额外的bar,你知道这些就足够了。但是还有好些新颖的功能呢,请看下面的高级专题。

*There are only 120 to go around, and any buttons with the same ID's show the same actions. By default a flexbar buttons ID is the same as it's number. On the default action bar, the ID for buttons 1-12 on page 1 are 1-12, on page 2 it's 13-24, on page 3 it's 25-36, on page 4 it's 37-48 , page 5 it's 49-60 and page 6 it's 61-72. With the exception of Warriors - page 1 is 73-84 in Battle Stance, 85-96 in Defensive Stance, 97-108 in Berserker Stance.
*一共按钮数目是120个,并且有同样ID号将会作出同样的动作。默认得Flexbar按钮ID和它的标号一样。在默认得动作条重,第一页的1-12ID对应按钮1-12,前6页都一样。对于战士来说,第一页为73-84对应战斗状态,85-96对应防御状态,97-108对应狂暴状态。

Frequently Asked Questions

通用问题解答:

Q: How do I display the button numbers in the button?
问:如何在按钮上显示器对应的数字?
A: /flexbar text button=1-120 text= '%d' See the text command in the appendix for details.
答:/flexbar text button=1-120 text='%d' 见命令附录获取详细信息。

Q: How do I get FlexBar to change buttons when I stealth/ change stance/ change form etc.?
问:如何在我潜行/切换状态/切换变形等时候同时变换Flexbar的按钮?
A. Look at the section on remapping in the examples
答:看下面Remaping(映射)部分的例子。

Q: How do I get buttons to only show up in combat?
问:如何让我的按钮在战斗状态才弹出?
A: Look in the examples in the section on events
答:看下面Events(事件)部分的例子。

Q: How do I get Overpower to show when it can be used?
问:我如何让我的压制在可使用时弹出?
A: This used to be simple, if Overpower were on button1 then:
答:这里有一个例子,如果你的压制在按钮1上时:
  /flexbar show button=1 on='IsUsable' target=1
  /flexbar hide button=1 on='NotUsable' target=1
  However, in the latest version of WoW, this only works now if you are already in battle stance. As long as that's ok with you, use this form. Also use this form for all other classes abilities that have a prerequisite (Mongoose bite, Riposte - the works). For Warriors who stance dance, however, things are a bit more complex.
  但是在新版本的WOW(1.4.0+)中,只有当你处于战斗状态时才会起作用。这对于只用这种状态的人是可以得,当然,这也适用于其他职业需要前提条件的技能(比如:猫鼬撕咬,回刺等),但对于频繁切换状态的人,这有些复杂。
  The simplest for of this is:
  这是最简单的一个方法:
  /flexbar show button=1 on='TargetCombat' Target='dodge'
  /flexbar hide button=1 on='TargetCombat' Target='Dodge' in=40

  Ths will show on a dodge and hide after 4 seconds. This does not take into account rage/cooldown conditions.
  这将使按钮在闪避成功后显示,然后在4秒后隐藏。这个不包含射程/冷却条件(你可以自己增加)。

Q: What about Pet Buttons?
问:宠物按钮怎么样了?
A: As of 1.37 you still need to use either regular macros or flexmacros to implement pet buttons. This suffers from not showing the status of your pet (passive/aggressive/defensive, wait/follow/guard and autocasting). My plan is for the ability of FlexBar Buttons to mimic pet buttons in 1.38.
答:在1.37版本中,你还是需要使用或者原始的宏或者flex宏来执行宠物按钮。这样不得不忍受不能观察宠物状态(被动/主动/防御,等待/跟随/守卫和自动施法)的麻烦。我现在痛苦的是如何在1.38中用flexbar的按钮功能模仿宠物按钮。

Q: What about Bag Buttons?
问:如何显示包裹按钮?
A: Well, they are not directly supported BUT, I use the following:
答:现在并不直接支持,但是我用下面的代码来代替:
  /flexbar flexscript ID=120 texture='%backpack' scrpt='OpenAllBags()' name='Bags'
  /flexbar text button=120 text='%allbagsnumslotsleft'
  /flexbar text2 button=120 text='%allbagsnumslots'
  /flexbar shadetext button=120 color=[10 10 10]
  /flexbar shadetext2 button=120 color=[10 10 10]
  /flexbar justifytext button=120 pos='topleft'
  /flexbar justifytext2 button= 120 pos= 'bottomright'

  This gives me a button with bag status (total used/total available) and it opens all my bags/closes all my bags on a press.
  这样就建立了一个按钮来显示背包状态(已使用/总共格数)并且点击可以显示我所有的背包。

Q: How do I hide the main bar?
问:如何隐藏我的主界面?
A: There are a number of mods that will do it for you, but the easiest way is:
答:有很多插件都提供这种功能,但是有更简单的方法:
  /flexbar RunScript Script='MainMenuBar:Hide()' on='ProfileLoaded'
  /flexbar Runscript Script='MainMenuBar:Hide()' on='BindingKeyUp' Target=30
  /flexbar Runscript Script= 'MainMenuBar:Show()' on='BindingKeyDown' Target=30

  By binding a key to FlexBar Event 30 - I can show it by holding that key down.
  按你绑定在事件30的键就可以暂时性显示主界面(译者注:建议Tab键或者H键)

Q: My buttons remap, but my hotkeys still try to activate the other abilities, why?
问:我的按钮已经映射了,然是当我按快捷键的时候还是启动了其他的技能,为什么?
A: Your hotkeys are still bound to the Blizzard Action Bar, not to the FlexBar Buttons. You'll need to hit <esc> go to Keybindings, scroll WAY down to the Flex Bar Button bindings and re-assign them there.
答:你的热键还是绑定在暴雪动作条上的,而不是Flexbar按钮上。你需要按Esc选择按键设置,滚动到FlexBar按钮设置上来重新绑定热键。

Q: How do I keep from dragging my icons off my buttons in a fight?
问:如何避免在战斗中把按钮拖出去?
A: Use /flexbar LockIcon Button=# to lock them on. You can only get them off by shift-clicking (not shift-dragging) when you do this. To unlock them type /flexbar LockIcon button=# Off='true'
答:用/flexbar LockIcon Button=数字来锁定按钮,你只有用Shift+点击(不是shift拖拽!)来拖放。如果要解除锁定,用命令:/flexbar LockIcon=数字 Off='true'
 

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
高级专题讲座
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Advanced Topics - Remapping Buttons
高级专题 - 按钮映射(Remapping)

What is Remapping? In World of Warcraft, action buttons have what is called an ID. This number is not necessarily the number of the button. It is a number from 1-120 and it uniquely identifies the action on the button. Two buttons with the same ID will have the same action on them, if you drag an action from one of them, it will dissappear from the other. This is key to the way the default action-bar changes when warriors change stances, druids change forms, rogues stealth or anyone changes the page. They are still the same button, they just have a new ID.
什么是映射?在魔兽世界里,动作按钮都有一个叫ID的东西。ID的编号并不依赖于按钮的编号,ID一共有1~120并且是唯一辨认按钮所对应动作的编号。如果两个按钮有相同的ID,将会在点击时有同一个动作,一旦你拽离一个按钮,另一个也消失掉(译者注:这就是为什么你把Flexbar中按钮1~12清空时,你主界面快捷栏的1~12也空了的原因)。这就是为什么默认得动作条在战士切换状态,德鲁依变形,盗贼潜行或者任何人切换页(主界面动作条旁边的上下按钮)时会改变的原因,还是一样的按钮,只不过有了一个新的ID。

Why Remap? Hotkeys are attributes that are attached to the actual button, if you want the same hotkey to perform a different action depending on what stance/form etc. you are in, then the way to do it is to change what action is on the button, rather than what button the hotkey points to.
为什么要映射?如果想热键的属性依赖于目前的按钮,同样的热键来在不同状态下做不同的动作,那么你需要下面的知识。下面要作的是什么动作在按钮上,而不是什么按钮绑定在热键上。

/FlexBar Remap Button=# Base=#

This is the basic FlexBar remap command - it takes a button or list of buttons and changes their ID to that specified in Base (or to a series of them starting at Base). IE:
这是最基本的Flexbar映射命令,它把一个或者一系列的按钮(Button指定的)赋予从Base所指定的ID开始的一个或一系列ID,解释:
/flexbar remap button=1 base=13

Will cause button 1 to take on ID 13.
将会把13号ID对应动作映射到1号按钮

/flexbar remap button=1-12 base=13

Will cause button 1 to have ID 13, button 2 to have ID 14 on up to button 12 having ID 24
将会把ID13赋予按钮1,ID14赋予按钮2依此类推,直到按钮12被赋予ID24

Just remapping like this isn't terribly useful, but remapping on events (See Advanced Topics - Events, Delays and Conditions) is the key to both mimicing the Default Action bar, and extending that behavior to classes like hunters (map from melee moves to ranged combat and back based on range to target) shadow priests and more.
仅仅这样映射看起来并不十分有用,但是当映射和事件结合的时候(详见高级专题-事件,延迟和条件)就是替代默认动作条的最佳选择,并且能够推广到一切有特殊偏好的职业比如猎人(进身时用近战动作条,拉开距离到达射程范围时用远程武器)或者暗影牧师(暗影状态和正常状态切换)等等。

Examples:
例子:
For warriors, the default action bar remaps page 1 based on what stance you are in. To mimic this we will create a 12 button bar that will map to ID's 1-12 on battle stance, 13-24 on defensive stance and 25-36 on berserker stance.
在这个例子中我们用把动作条第一页(1-12号按钮)根据状态调整不同的映射,ID1-12映射为战斗状态,ID13-24映射为防御状态,25-36映射为狂暴状态。

This is best done in the Scripts Editor (See the GUI Panels Section). (basically cut and past the following into it, hit the config button, then close the scripts editor)
最好在脚本编辑器中完成这些编辑(详见控制面板部分)。(只需要简单的剪切并粘贴到编辑器中,点击配置按钮,然后关闭脚本编辑器)

Group Button=1-12 Anchor=1
Horizontalgroup group=1
Show Group=1
GroupButton=13-36
Verticalgroup Group=13 Width=6
Show Group=13

these commands will set up 2 groups - 1 of 12 buttons in a line (drag this where you will want to use it) and one of 24 buttons in 4 rows of 6 (this will end up hidden - put it anywhere)
这些命令将会编辑2个组,1组12个横排的按钮(可以自由拖动),一组4×6共24个按钮(将在最后隐藏这些按钮,放哪里都可以)

Next, put the commands you want in battle stance in buttons 1-12, defensive stance in buttons 13-24 and berserker stance in buttons 25-36.
接下来,把你在战斗状态用的技能防到按钮1-12里面,防御状态用的技能防到13-24里面,狂暴状态用的技能放到25-36里面。

Next type /flexbar hide group=13 (as we don't need to see it any more)
接下来,敲入/flexbar hide group=13(我们不再需要看到它们)

then, clear the editor and put the following in:
然后清除掉编辑器里面的内容,把下面的写入:

Remap Group=1 Base=1 Reset='true' On='GainAura' Target='Battle Stance
Remap Group=1 Base=13 On='GainAura' Target='Defensive Stance'
Remap Group=1 Base=25 On='GainAura' Target='Berserker Stance'

Now hit the config button again and hide the scripts editor. Switch stances and watch the buttons move.
现在,再次点击配置按钮,然后隐藏脚本编辑器,切换一下状态,然后看看按钮的移动是否正常。

The last thing we need to do to make this complete is make sure that your keybindings are set to FlexBar Buttons 1-12 NOT the regular WoW Action buttons, or this will cause problems.
最后要注意的事情是,你的热键设置为FlexBar 1-12按钮,而不是WoW原始动作条1-12按钮,否则将导致问题出现!

Extending this to forms is easy - just use On='GainAura' Target='Bear Form' (or 'Dire Bear Form') and target='Cat Form' and use 'LoseAura' Target=['Cat Form' 'Bear Form' 'Dire Bear Form'] to get back to your caster buttons.
当然这可以很容易的扩展到变形(德鲁依),只需要把 On='GainAura'的对象Target改成Target='熊形态'(或者'巨熊形态')或者Target='猎豹形态'然后再用On='LoseAura' Target=['猎豹形态''熊形态''巨熊形态']在变形成人时把施法按钮替换回来。

For Stealth it is GainAura/LoseAura Target='Stealth'
潜行的对于GainAura/LoseAura的对象是Target='潜行'

For Hunters, put auto shot somewhere safe (button 120 perhaps) and use On='NowInRange' Target=120 to move to ranged skills and On='OutOfRange' Target=120 to move to melee skills.
对于猎人,把自动射击防到比较安全的地方(或许按钮120,反正就是不会被你自己不小心替换掉的地方)然后用On='NowInRange' Target=120切换到远程技能,然后用On='OutOfRange' Target=120来切换到近战技能。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Advanced Topics - Events, Delays and Conditions
高级专题 - 事件,延迟和条件

Introduction:   In addition to very configurable buttons, FlexBar keeps track of dozens of different game states and raises an event (think trigger) when they change. This can be gaining a target, losing a buff, getting poisoned, changing forms, losing health. Many of these events can come from many different sources - health events can come from you ('player') your pet ('pet') your group mates ('party1', 'party2', 'party3', 'party4') or your target ('target'). In FlexBar parlance this is the Target of the event. It's not the best way to refer to it, but it's what I started with and we're stuck with it :)
介绍:除了具有非凡可编辑性的按钮外,Flexbar还可以保持对一系列不同的游戏状态和事件发生的变化做出反映。这些变化可以是获得一个目标,失去一个Buff,中毒,形态变换,失去生命等,这些事件都可以有不同的源,比如:生命事件可以对象是你('player')、你的宠物('pet')、你的小组成员('party1', 'party2', 'party3', 'party4')或者你的目标('target')。在FlexBar的用法中,这些是事件的对象(Target)。虽然不是最好的描述方法,但是我最初就是这么定义的 :)

Taking action on these events is the core of what makes flexbar so versatile - you can have your combat buttons show only when you need them, you can create r-click button menus, pop-bars and a whole slew of other things by taking actions on events.
对于不同的事件做出不同的反映是让flexbar具有多种用途的核心,你可以在战斗状态才显示战斗技能按钮,你可以创建一个右键点击时出现菜单的按钮,弹出动作条,以及一系列的动作仅仅当事件发生时。

To further enhance this capability, FlexBar can incorporate a delay in executing the command and can decide to execute/not execute based on game conditions at the time of the event.
为了扩展这个能力,Flexbar可以混合一个延迟执行命令和根据游戏条件决定在事件发生是是否执行命令。

Examples: Popbar, Combat Sensitive Buttons, R-Click menus, Buff-warnings:
例子:弹出动作条,战斗状态弹出按钮,右键点击菜单按钮,Buff警告:

PopBar (use the Scripts editor to do this example)
弹出动作条(鼠标在上面时才显示)(用脚本编辑器来执行这个例子)

Group Button=1-12 Anchor=1
VerticalGroup Group=1 Width=4
Show Group=1 On='MouseEnterGroup' Target=1
Hide Group=1 On='MouseLeaveGroup' Target=1

This will create a 4 button wide, 3 button high group that will popup when you mouse over it and hide when you mouse away from it. In order to move it you'll want to type /flexbar show group=1 and move it with the handle without mousing into it - as once you do it will hide on the way out and you won't be able to grab the handle).
这将创建一个4×3的按钮组,当鼠标移动到上面时才显示,鼠标离开时自动隐藏。为了移动这个组,你需要敲入/flexbar show group=1来显示它,然后用小把手(锚)来移动它,不是把鼠标移到按钮上,你这样将会在离开时让按钮隐藏,并且没法按锚了!

Combat Sensitive Buttons - or show only when I might be in a fight:
战斗状态按钮,或者仅在我可能进入战斗状态时使用:

Group Button=1-12 Anchor=1
VerticalGroup Group=1 Width=6
Show Group=1 On='StartCombat' Target='player'
Show Group=1 On='GainTarget' Target=['hostile' 'neutral']
Show Group=1 On='TargetReactionChanged' Target=['hostile' 'neutral']
Hide Group=1 On='EndCombat' Target='Player'

Right Click Menus - a single button that pops a radial menu when Right-clicked. The menu disappears when a button is clicked or the mouse leaves the group
右键点击菜单按钮,一个按钮在右键点击时出现一组菜单,菜单在单击按钮或者鼠标离开组的范围时自动隐藏。

Group Button=1-7 Anchor=1
CircleGroup Group=1
Show Button=8
MoveRel Button=8 Trgbtn=7
Group Button=1-8 Anchor=8
Hide Button=1-7
Advanced Button=8 State='on'
Show Button=1-7 On='RightButtonClick' Target=8
Hide Button=1-7 On='LeftButtonClick' Target=1-7
Hide Button=1-7 On='RightButtonClick' Target=1-7
Hide Button=1-7 On='MouseLeaveGroup' Target=8

This will create an 8 button group with 7 buttons hidden - when you right click the visible button, the others will pop up in a circle over it. Drag the group by the visible button.
这会创造一个8个按钮的组,7个是隐藏的,当你右键点击按钮8是弹出隐藏的按钮,其他几个按钮在出现时是环形排列的,可以通过显示的按钮来拖拽整个组。

Buff Warnings - Ever get tired of realizing in the middle of a fight that you've been doing it without Blessing of Might up?
Buff警告,对于在战斗中突然发现力量祝福已经没有了有些烦恼么?

Put Blessing of Might on button 1
把力量祝福放在按钮1

Show Button=1 On='LoseBuff' Target='Blessing of Might'
Hide Button=1 On='GainBuff' Target='Blessing of Might'

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Delays: Sometimes we want to take an action a set amount of time after an event. An example of this is that, after a dodge Overpower is usable, but only for a set amount of time (4 seconds or so). To handle this we might put Overpower on button 1 then
延迟:有时候,你想要在一个事件发生后一段时间再执行某个动作,这里这个例子是在躲闪成功后让压制显示出来,但是只显示一段时间(本例中是4秒),为了达到这个墓地,我们现在把压制放置到按钮1,然后:

/flexbar Show Button=1 on='TargetCombat' Target='Dodge'
/flexbar Hide Button=1 on='TargetCombat' Target='Dodge' In=40

In= is the delay in tenths of a second.
In= 是按照1/10秒来计算延迟的。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Conditions: Because of the nature of events, you are given only one at a time - there is no event for when an ability is both in range and has enough mana. To do this we must check the other condition on the event:
条件:因为事件的本性,你只能在同一时间赋予一个,你不可能让一个事件同时判断技能在许可范围内并且有足够的魔法来发出它,因此我们要判断在事情发生时的其他条件。

/Flexbar Show Button=1 On='EnoughMana' Target=1 If='InRange<1>'
/Flexbar Show Button=1 On='NowInRange' Target=1 If='EnoughMana<1>'

Note that we have to put a command in for both events we are interested in to cover the 2 circumstances (1. We were already in range and just gained enough mana for the ability and 2. We already had enough mana and just moved into range).
注意这里,我们把一条命令放到了两个我们感兴趣的事件里面来描述这两种境况(一是我们在技能作用范围内,并且有足够的魔法来释放技能,二是我们有足够的魔法来释放技能,并且我们在技能作用范围内。)

Order of Execution: If you look in the event list (either in the event editor or through /flexbar listevents) you will see that they are in a specific order - this is the order that the commands are processed in on a given event -- the lower numbered commands will be processed first.
执行顺序:如果你看一下事件列表(或者是在事件编辑器中,或者用/flexbar listevents来查看)你会发现它们有特定的顺序,这就是在某个事件发生是命令处理的顺序,序号越低的命令将会越早执行。

Also, events > delay > condition is the order in a command:
然而,在一条命令里面,执行的顺序是:事件 > 延迟 > 条件

IE: /flexbar show button=1 on='losttarget' in=5 if='manabelow50<"player">' will process as follows:
举例来说:命令 /flexbar show button=1 on='LostTarget' in=5 if='manabelow50<"player">'将会按照如下顺序执行:

1. When you first type it in, an event is added to the event list.
1. 当你键入上述命令的时候,一个事件被加入事件列表中。

2. When the event fires, the command is sent to the command processor without the on= on it, at this time it executes any delay
2. 当事件发生时,命令被送到命令执行部分(on=是不送的,那个是事件部分),在这时将执行延迟命令。

3. At the end of the delay the command checks the If= condition -- if it is true at this time, the command executes.
3. 在延迟结束之后,命令执行部分将会检测If=所规定的条件,如果此时条件允许,将执行命令。

Commands that can be executed On=, If=, In=
可以在On=,If=,In=中被执行的命令如下:

"show", "hide", "fade", "shade", "scale", "moveabs", "moverel", "movetomouse", "remap", "echo", "use", "runscript", "runmacro", "text", "text2", "raise", "settexture", "shadetext", "shadetext2"

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
高级专题 - GUI界面
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Flex Bar has some GUI stuff
FlexBar有一些可以自由填充数值得界面

FlexBar is arcane: Okay - this criticism holds water - the programmer of FlexBar found Vi to be user friendly. The heavy reliance on slash commands stems from both that and the fact that editing GUI elements in WoW is a royal pain.
Flexbar是很神秘的:好了,这个批评说的通,Flexbar的编程者发现要降低门槛来对用户表示友好。对于命令行的偏爱一方面是个人喜好,另外一方面是WOW里面编辑GUI元素是如此的痛苦。

However, Flexbar 1.37 has several GUI panels to make some things a bit easier.
但是,Flexbar1.37还是有一些GUI界面来让设置更简单些。

    Global Options - from here you can set things such as verbose level, tooltips, load speed and more
    整体选项 - 在这里你可以设置比如详细等级,提示,载入速度等等。

    Event Editor -- Forget countless tries of /flexbar xxx on xxxx - The event editor makes adding, editing and deleting events much easier. It includes context sensitive lists of potential values for each parameter -- makes remembering the spelling of some of my longer event names much easier.
    事件编辑器 - 忘记数不胜数的对于/flexbar xxx on xxx的厌倦,事件编辑器可以非常容易的增加,修改和删除事件。它包含了所有可用的该部分的值,这让记住长长的事件名十分容易。

    Performance Panel -- Set event checking for some of the CPU hogs to off or low to get better performance. There is a penalty for some of this, if you turn of Unit Buffs (or set it to low) the conditionals unitbuff/unitdebuff/unitdebufftype will not work. However, in most cases (particularly isusable, enoughmana, cooldown, inrange) setting to low is a very good idea.
    显示效果面板 - 设置某些事件不在关注列表中,让CPU解放出来改善显示效果。当然这有些惩罚,比如你关闭了对于Unit Buffs(或者设置成低),条件里面的unitbuff/unitdebuff/unitdebufftype将会停止工作,但是大部分的事件(显著的可使用与否,充足魔法,冷却时间,射程检查)设置到底是不错的选择。

    Scripts Editor -- A simple text editor that will allow you to write scripts/macros/config files up to 10240 characters, save them to SavedVariables.lua and run them as script/macro/configs from the editor. A saved macro/script can later be used in runmacro/script or flexmacro/script commands.
    脚本编辑器 - 一个简单的文本编辑器,允许你在里面写脚本/宏/配置文件最多到达10240字符,保存这些将保存在SaveVariables.lua文件(该文件在WOW的个人设置文件夹里面World of Warcraft/Wtf/Account/(你的帐号)/(你的人物))里面,你可以从该编辑器运行这些脚本/宏/配置。一个保存的宏/脚本可以在之后用于运行宏(系统默认的) /script或者flexmacro(Flexbar自带的宏编辑器) /script命令里面。

    Auto Items Manager -- A simple panel to allow you to toggle on/off auto items.
    自动物品管理 - 一个简单的面板,允许你选择开关自动物品(详细解释见新增功能部分)。

For all windows - escape will close any open menus, if there are no open menus it will close any open GUI panels, if there are no open GUI panels it will close the FlexBar Main Menu, if it isn't open it will behave like normal.
所有的窗口,ESC键将关闭所有打开的菜单,如果你没有打开的菜单,将会打开GUI面板,如果没有打开的GUI面板,将会关闭FlexBar的主菜单,如果没有打开Flexbar的主菜单,将会和平时你按ESC的表现一样(默认打开游戏主菜单)。

Look in KeyBindings in the Main Game Menu for direct bindings to the FlexBar main menu and to all these panels.
游戏主菜单的按键绑定选项里面给FlexBar的主菜单和各个控制面板分配好热键,方便调用。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Global Options
整体选项

  1.Load Speed: This defaults to std (standard) which has a pause in it before loading the profile. The reason for this was a poor design decision early on in FlexBar that caused WoW to store where it thought some of the buttons should be. The conflict cause some of them to move. I have fixed this in the XML - BUT, if you have had flexbar before then those locations are cached. If you want to use fast load, go to your World of Warcraft\WTF\Account\<account name>\<character name>\ directory to the layout-cache.txt file. Remove all entries with "FlexFrame" in them (or delete it entirely). This may cause some of your empty buttons to show a clear background - just drag an action them, then remove it, that will fix it. Now you can toggle fast load. Safe load is a holdover from the lost configurations, there should be no need for it now.
  1.载入速度:这个默认是std(标准),在载入前会有停顿(译者注:一个按钮让你按)。这么干的原因在于早期的Flexbar的草率的设计构架让WOW在载入设置的时候把按钮归档到它认为在地位置,这个冲突导致了一些按钮被移动,我在XML中纠正了这个错误,但是如果你在以前(纠正错误,版本未知,估计是1.3.6)用过flexbar,这些位置信息保存在了缓存里面,如果你想要用快速载入模式,到你的World of Warcraft/Wtf/Account/(你的帐号)/(你的人物)文件夹下打开layout-cach.txt文件,把其中有"FlexFrame"的部分都删除掉(你也可以简单的把这个文件删除掉(译者注:小心再小心,有些其他的插件也要保存信息在这里面!))。这样将会让一些空按钮不能自动隐藏(显示一个背景)你只需要拖拽一个技能到里面然后再去掉就可以纠正这个问题。现在你就可以使用快速载入了。安全载入是为了应付配置丢失的问题的(译者注:老版本的bug,1.2.x以前的问题),现在不需要了。

  2.Detailed Feedback: Also known as verbose mode, this gives a great deal of feed back on the actions FlexBar is taking. Keep it off most times for your sanity.
  2.详细的反馈:也就是debug模式,在一个Flexbar动作发生时反馈详细的过程和参数返回值,为了你的身心健康,最好在大部分事件里关闭这个选项(译者注:满屏幕的返回值让人发疯……)

  3.Hide Tooltips: Check to hide FlexBar Button tooltips
  3.隐藏提示:选择时将隐藏FlexBar按钮的提示。

  4.Force Shading: This will enable buttons to automatically shade red if they are out of range, green if they are unusable and blue if they don't have enough mana.
  4.强制染色:这将会允许按钮在射程外是自动变红,不可用时自动变绿,无魔法时自动变蓝。

  5.Auto Performance: Check to have FlexBar try to automatically set your event notification level. For any event group which does not have one of its events in the event list, that event group will be turned off (see performance panel). For any event group with an event in the event list, it will be set to low. Please be aware of the potential problems this will cause with certain conditionals. See performance panel for details.
  5.自动配置显示效果:选择这个选项,Flexbar将尝试自动设置事件的关注等级,只要任一事件组中的事件不在事件列表中,这个事件组将会被关闭(详见显示效果面板);如果任一事件组有在事件列表中的事件,这个组将会被设置为低。但是请注意某些特定的条件将会引起潜在的问题。详见显示效果面板来获取详细信息。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Event Editor:
事件编辑器:

The most powerful part of FlexBar is also its most difficult to manage - taking actions on events. Among the problems I've seen are: Long and not consistently named events, a lack of understanding of the possible targets for events and a cumbersome interface for editing/adding/deleting events.
Flexbar中最有用但是也是管理最困难的部分——事件动作。我经常看到的问题是:长且没有统一命名的事件,对于事件的可用对象缺乏了解,令人讨厌的编辑/增加/删除事件的界面。

Enter the Event Editor window:
进入事件编辑器窗口:

  At the top is a scrolling list of events (scroll with either the large arrow buttons on the top left or with your scroll wheel). To the right of each event are 5 buttons - EDT (edit this event), INS (insert above this line), DEL (delete this event), a down arrow (swap this event with the one underneath it) and and up arrow (swap this event with the one above it).
  在(窗口的)上部是一个可卷动的事件列表(你可以用左上角大大的箭头按钮来上下翻页,也可以用鼠标滚轮来滚动)。每个事件的右侧有5个按钮——EDT(编辑改事件),INS(在这一行上面添加事件),DEL(删除该事件),一个向下的箭头(和这个事件相邻的下一个事件交换)一个向上的箭头(和战歌事件相邻的上一个事件交换)

  At the bottom is a set of entry boxes for the various parameters of an event - most with drop-down menus accessed by the down arrow to the right. For every event the following fields are available:
  在(窗口的)底部是一些输入框,用来输入事件的各种参数,大部分都在右侧有一个向下的箭头来显示下拉式的菜单,对于所有的事件来说下列参数是可用的:

    1.On=       This is the event name to watch for. The drop down list is prepopulated with EVERY event that FlexBar currently raises. If you hand type the event, single quotes are still required. On tabbing out of this box, the drop down arrow to the second box becomes available.
    1.On=       这是所要关注的事件的名称。下拉式列表里面有所有Flexbar现在所支持的事件,如果你要手写事件名称,还是需要单引号的在写入这些列表后,第二个填充表格的下拉式箭头才可用。

    2.Target=     This is the target that raised the event. The drop down menu will contain a list of possible targets if the are available. Most events have a limited list of possible targets. Some, however, I was unable to enumerate when I wrote this. Among those are buff names, debuff names and aura names and combat targets. What I've had FlexBar do is keep track of every buff/debuff/combat type/aura name it sees so it eventually will give you a better list of these. One thing you should do is turn the event group Unit Combat to high and go melee a bit to populate that list with the 5 actions in your native language.
    2.Target=     这是引起事件的对象。下拉式菜单将罗列所有许可得可能目标。几乎所有事件都有一个限制了的可行行目标,但是还是有一些我没法罗列所有的目标,主要是一些Buff的名字,DeBuff的名字,脚环的名字和战斗的对象名字。我能让FlexBar作的就是保持对所有Buff/Debuff/战斗种类/脚环名称的监视,最终将给你一个比较好的这些名称的列表。你要做的就是把事件组的Unit Combat调到高(译者注:详细参看显示效果面板)然后作一些近身格斗来关查在你的语言版本中5种战斗状态的名称列表。

    3.If =       This has a dual drop down - one a list of conditionals and the other a list of (,),and,or,not - use these to build your if expression. One thing it does not have is auto target fill in for the conditions, you'll still have to do that manually.
    3.If=       这有一个双重下拉式列表——一个是条件的,一个是(,),and,or,not的(用来构建if表达式)有一件东西是没有的,那就是条件里面的自动目标,你还是要手动填写。

    4.Command=   This is the command you want to execute on that event, the drop down shows a list of all commands that can be do on an event. On selecting a command, a series of parameter boxes appear with drops downs for each paramter the command can take.
    4.Command=   这是你在事件发生时要执行的命令,这里的下拉式列表列举了所有在事件发生时能够执行的命令。当你选择了一个命令时,会出现一系列的可填充的参数框并且也有相对应的下拉式参数来让你选择每个参数可用的命令。

    5.In=       This is the delay to wait before executing the command. Delay is in tenths of a second
    5.In=       这是命令执行前的延迟,延迟是按1/10秒计的。

    6.Tname=     This the optional name for the timer started with the In= parameter, using this name the timer can be terminated
    6.Tname=     这是可选名字,是赋予在In=选项里面开始的计时器的,用这个名字可以让计时器停止。

    7.TToggle=   The only value for this is 'true' - if it is true, then if a timer is already running with that name, it is cancelled.
    7.TToggle=   这里唯一可以赋予的值是'true',如果是'true'的话,并且一个计时器用这个名称来运行的话,将会把时钟中止。

(译者注:我是这么理解最后两个参数的,就是说,给一个计时器在一个事件条件中一个名称,当另外一个事件也发生的时候,可以用TToggle来中止正在计时的那个计时器,当然,后面的命令也不会起作用了(前一事件对应的命令),然后取而代之地是后一个事件)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  Below this are the command specific parameters
  下面是命令的详细参数

  Finally there are two buttons -
  最后有两个按钮:
        *
        <Save All Changes> saves the current event to the event list
        <Save All Changes>保存当前事件到事件列表

        *
        <Cancel All Changes> erases the current event info
        <Cancel All Changes> 清除当前事件信息

  See the topic "Advanced Use: Events, Delays and Conditionals" for examples.
  详见高级应用专题:事件,延迟和条件部分

Performance Panel:
显示效果面板:

FlexBar has a lot going on under the hood, and this brings up justified worries about its impact on framerates. In order to address this, the Performance Panel allows you to customize Event detection and reporting to reduce CPU load.
Flexbar覆盖面过广,这被证明是有些过滤了,并且影响了画面显示,为了解决这个问题,显示效果面板允许你自由定制对事件的侦测和报告来缓解CPU的载荷。

Every event is part of an Events Group (see the detailed list of events for the group name for each event). The performance panel has a button for each group with options of Off, Low and High.
所有的事件都是某事件组的一部分(详见每个事件的所属组别的列表)。显示效果面板对于每一个组都有一个按钮来调节 OFF(关闭)/Low(低)/High(高)。

  OFF At this setting the events in the group will not be raised at all, moreover the least amount of processing takes place determining that we don't want to do it (for polled events like isusable, inrange etc, the timer on which these states are checked are turned off. For events that happen off of WoW events, we exit in the first line of the handler) For some (like buttonpresses) it just disables reporting (so we don't process the event list - although it is a negligible savings, since that routine exits immediately if we don't have any commands attached to that event)
  OFF 在这种设置级别,这个组中所有的事件都被完全忽略,除非(CPU)处理不过来,我们不建立采用这一项(对于轮询事件比如(技能)可用与否,(技能)是否射程内等,在这些状态被检查过的计时器将被关闭。对于那些离开WOW事件发生时的事件,我们在第一时间放弃处理)对于一些(比如按钮被按下)事件仅仅是禁止了报告功能(这样我们就不必处理事件列表,虽然这是可以几乎被忽略的保存,并且当没有任何命令和这个事件关联时程序马上离开)。

  LOW At Low, the event is processed, but it is raised only for those targets that are specified in the events list. IE: if the only usable event we have in the list is Show Button=1 on='IsUsable' Target=1, then on low setting it will only raise IsUsable for button 1, not the rest. Moreover, for items like not/isusable, outof/nowinrange, (not)enoughmana, cooldownmet/start - it only loops through the buttons we are interested - potentially avoiding a tremendous amount of cpu usage. For other events it merely restricts reporting. For many events Low and High are indistinguisable (for those events with no target need).
  LOW 在低等级下,事件还是会被处理,但是仅仅对于那些对象被在事件列表中注明的事件作出反映。举例来说:如果我们只用Show Button=1 on='IsUsable' Target=1这样一个事件,设置低的话那么只有按钮1可用时才会激活,而不是其他的按钮。此外,对于物品的可用与否,射程内外,魔法充足与否,冷却时间完成与否,(设置为低时)仅仅对于我们感兴趣的按钮会回应,有效避免了潜在地CPU用量激增。对于其他的事件,低等级只是显示了报告。对于很多事件来说设置为地和设置为高是一样的(对于那些不需要对象的事件)

  HIGH The default state, scan every target, report every target. Potentially CPU expensive for button the events mentioned in Low because it requires scanning each of 120 buttons for an action, then for the mana/range/usable/cooldown state of teh button of buttons with an action.
  HIGH 这是默认状态,扫描每一个目标,报告所有的目标。潜在的,大量CPU花费在关注低级事件回报里面,因为需要扫描所有120个按钮来找寻一个动作,并且要注意这个按钮是否有充足的魔法/在射程内/可用/已冷却等。

Important Caveat: Several conditionals (UnitBuff/UnitDebuff/UnitDebuffType/HasBuff/HasDeBuff/HasDebuffType) are dependent on the event group of the associated events being turned to high to always produce accurate results. If it is turned to Low, then these conditionals will only be accurate for units specified as targets of one of the events. If you are a class with buffs or the ability to dispell debuffs, I recommend this either be turned to High, or (in the case of having Auto Performance set) you include the units you are interested in in dummy events: EG Runscript Script='do end' on='UnitBuff' Target=['player' 'party1' 'party2' 'party3' 'party4'] -- this will force FlexBar to keep this info up to date.
重要的警告:一些条件(UnitBuff/UnitDebuff/UnitDebuffType/HasBuff/HasDebuff/HasDebuffType)必须在相关事件的事件组设置为HIGH(高)等级时才能正常工作。如果被调整为低等级时只有详细的指定目标(就是说Buff/DeBuff必须指定名称/等级/所属等)才能触发条件。如果你是一个有Buff或者有消除Debuff技能的职业,我建议你要么设置成HIGH,或者(如果你使用了自动调整显示效果)你把你感兴趣的对象罗列岛一系列事件中:例如在(脚本编辑器中)运行脚本 Runscript Script='do end' on='UnitBuff' Target=['player''party1''party2''party3''party4']这将强制Flexbar保持对这些信息的更新。

Scripts Editor:
脚本编辑器:

The FlexBar scripts editor provides a (very) simple note-pad like editor that can hold 10240 characters. There are some quirks to it: Hitting home or end will take you to the beginning/end of the whole edit box, not the line as in a regular editor. If you hit return at the bottom of the editor and it is the last line in the script the cursor will dissappear below the border until you start typing -- just keep an extra blank line at the bottom to avoid this. Clicking in the box sometimes causes a large portion to be highlighted, be careful.
Flexbar脚本编辑器提供了阿一个很简单的可以容纳10240字节的记事本式的编辑器。这里有一些习惯性问题:点击Home或者End将会让你回到整个编辑窗口的开头/结尾,而不是和普通编辑器一样是一行的开始/末尾。如果你在编辑器底部敲入回车键,并且是在脚本的最后一行,鼠标指针将会消失于,直到你再次开始敲入命令如果想要避免,在最后一行放一个空白行。点击编辑框有时会导致一大部分(脚本)高亮显示,小心。

At the bottom of the window are several UI elements
窗口的底部有一些UI元素

    The Script Name Edit box, this is where you'll type in the name of a script to be loaded, deleted or saved to. To the right of this box is a down arrow that will show a list of all saved scripts - clicking on one will load its name in the Name edit box, right-clicking will load the script into the editor as well.
    脚本名称编辑框,这是你选择一个脚本的名字来载入,删除或者保存的。在这个框右边是一个向下的箭头来显示保存过的脚本列表,点击一个将会把名字载入名称编辑框,右键点击将会把脚本载入编辑框。

    Run - as <Script> -- This button will execute the contents of the script box as Lua code. Do not use this option for FlexBar commands or Macro (slash) commands - it will just give you an error.
    Run -as <script> -- 这个按钮将会以LUA代码形式运行脚本框中的内容。不要用这个选项来运行Flexbar命令或者宏(缩写)命令,你仅会得到一个错误。

    Run - as <Macro> -- This button executes each line as though you had typed it at the command line of WoW. Do not use this for lua code or multiple flexbar commands (the first it will just say the lua code, the second causes timing issues with some commands).
    Run - as <Macro> -- 这个按钮将会运行每一条你敲入的命令,如同在WoW的命令行中敲入一样。不要把这个用于LUA代码或者多个Flexbar命令(前者将会说出lua代码,后者将会导致一些命令的计时问题)
    Configuration - Management <Config> -- This button executes the lines in the file as FlexBar commands with the proper delay between them to help prevent timing issues.
    Configuration - Management <Config> -- 这个按钮以Flexbar命令的方式运行文件的每一行,并且每一行之间具有适当的延迟来帮助防止计时问题的发生。

    Configuration - Management <Import> -- The original implementation of configs had them in FlexBar_Config.lua - this has problems, but people would like to edit/keep those. Using this button, the editor will search for that config in the config.lua file and load it as a series of flexbar commands. Recommended: Import each config and resave it to SavedVariables.lua.
    Configuration - Management <Import> -- 原始的命令的执行是放在FlexBar_Config.lua文件里面的,这会有问题,但是有人习惯于这样编辑和保存。用这个按钮,编辑器将会搜索在config.lua中的配置然后作为一系列的Flexbar命令来执行。提醒:载入和保存每个配置将会放在SavedVariables.lua文件里面!

    Configuration - Mangement <Restore> -- Each time you run <Config> a copy of the old profile is stored to a temporary undo buffer. This buffer only holds the last profile and only lasts until logoff/reloadui. Hitting <Restore> will bring that profile back.
    Configuration - Mangement <Restore> -- 每次你运行<Config(配置)>的时候会把旧有的配置保存在一个撤销缓存里面。这个缓存仅保存最近一次的配置文件并且仅持续到你登出或者重新载入UI。点击<Restore>将会把前一个配置还原。

    <Save> -- Saves the current text block to the named location. This will overwrite any previous text block of that name without warning.
    <Save> -- 保存现在的文本到一个已经命名的位置。将会不警告的覆盖你原先以这个名字命名的文本!

    <Delete> -- Delete the named text block - this will delete without warning.
    <Delete> -- 删除被命名的文本,这个也不会警告!

    <Load> -- Load the named text block into the editor
    <Load> -- 载入命名的文本到编辑器中。

    <List> -- Pop up a scrolling list of all text blocks - not as nice as the new drop down.
    <List> -- 弹出一个滚动列表显示所有的保存的文字(命名的名字),没有新的下拉式好。

    <Close> -- Close script editor
    <Close> -- 关闭脚本编辑器

    <New> -- Erase current text editor contents.
    <New> -- 清楚现在地文本编辑器的内容

Auto Items Manager:
自动物品管理:

This window displays a scrolling list of all usable items that you have in your action bar (such as potions, bandaids and the like). To the left of each item is a check box, to the right the number of them you have and the ID at which they reside. Checking the box will cause FlexBar to try to make those items stick in that ID slot: When you run out it will keep the icon in there and it will try to reload them into that ID when you get more.
这个窗口显示一个可以在动作条重使用的物品列表(比如:药品、绷带等等)。在每个物品的左边有一个钩选框,在右边有每个物品的数量和他们的位置的ID。钩选该物品将会使FlexBar尝试将这些物品总放在固定的ID槽:当你的这个物品用完了之后将会保持图标在那里,当你又有的时候再次显示数量。

When you run out of an Auto Item, an event is raised (autoitemout) as is an event when they are replaced in the action bar.
如果你的某个自动物品用完了,一个事件将会被激活(autoitemout)和一个当它们在动作条中被替换事件一样。

If you are out of an Auto Item it is still displayed in the box - until you uncheck it, at which time it will dissappear.
如果你的某个自动物品用完了,还是会显示在动作条中,知道你把钩选去掉,那时才会消失。

Auto Items can not be dragged out of their buttons, nor can other actions be dragged onto them.
自动物品不能被拽离它们的按钮,也不能把其他动作拽到这个按钮。

Breaking the 18/256 Limit - FlexActions
打破18/256的显示——FlexActions

18 macros/256 characters per are the limits we've grown accustomed to in WoW. Well, with FlexBar those are gone. FlexBar Scripts Editor allows editing scripts/macros as long as 10240 characters each. Further, if you put your code in functions and load them on the event 'ProfileLoaded' then your only limitation is 10240 characters per function. Also, with the new flexmacro/flexscript commands you can have as many macros as there are Button ID's.
在WOW中18个宏,每个宏256个字符的限制是限制我们自由发挥的重点。现在,用了Flexbar这些都不存在了。FlexBar脚本编辑器允许编辑长达10240字节的脚本和宏。此外,如果你把你的代码放到函数中,并且在事件'ProfileLoaded'(载入个人配置时,就是人物进入服务器的时候)中载入这些函数,那么你仅有每个函数10240字节的限制。并且使用新的flexmacro/flexscript命令你可以拥有何呢按钮ID一样多数目的宏。

RunScript and RunMacro: These two commands allow you to run a script or macro on any flexbar event. BE AWARE - this will NOT allow you to autocast spells. Spells will still only cast when you click a button. This is built into WoW by Blizzard to prevent bots. The only events on which spells will fire (AFAICT) are "LeftButtonClick", "RightButtonClick" and "BindingKeyUp".
RunScript和RunMacro:这两个命令允许你在任意Flexbar事件中运行一个脚本或者命令。警告:这不是允许你自动释放法术!你还是要点击按钮来释放一个法术。这样设计的原因是暴雪不允许在WoW中有Bot存在!只有事件"LeftButtonClick","RightButtonClick"和"BindingKeyUp"才能发出法术。

The Script or Macro may be inline code (IE: script='OpenAllBags()' or macro='/dance') or the name of a script of macro saved in the scripts editor. Also, you may put multiline macros inline by putting them in brackets (IE: macro=['/dance' '/fbwait 20' '/bow']).
脚本或者宏可以是命令行(例如:script='OpenAllBags()'或者macro='/dance')或者在脚本编辑器中保存的脚本或者宏的名字。

Example: A macro that will cast Raptor Strike if you have Aspect of Monkey up and Aspect of Monkey if you don't
例子:一个宏如果你有猴之守护则释放猛禽一击否则释放猴之守护

Open the scripts editor and enter:
打开脚本编辑器,输入:

/if HasBuff("Aspect of Monkey")
/fbcast Raptor Strike
/else
/fbcast Aspect of Monkey
/end

Save this as 'My Raptor' then put the following on a macro button (standard macro button) /flexbar runmacro macro='My Raptor'.
保存这个宏并命名为'My Raptor' 然后把这个放到一个宏按钮上(标准宏按钮)敲入命令/fexbar runmacro macro='My Raptor'

FlexMacro and FlexScript: While using runscript/runmacro with "leftbuttondown" or "rightbuttondown" will simulate macros fairly well, it lacked two important features - a wide array of images for the buttons and the ability to follow a remap the way normal actions do. Enter FlexMacro and FlexScript. Like RunMacro and RunScript they run either inline macro/lua code or code from a saved script. Unlike the other two, they are attached to a button ID (not number) - remapping any button to that ID will get that flexaction's texture and action.
FlexMacro和FlexScript:当你以"leftbuttondown"或者"rightbuttondown"作为条件使用runscript/runmacro的时候将完美模拟宏,但是缺少两个很重要的特性:大量的按钮图标和根据映射的来的技能作为普通的动作执行。和其他的两个不同,它们依附于一个按钮ID(不是编号)映射任何按钮到这个ID将会得到Flexaction的文字标签合动作。

Example: Instead of using up one of WoW's 18 macros for the above example, I want it on ID 120 as a FlexMacro:
例子:对于上述例子代替消耗WOW18个宏中的一个,我想让他在ID120上,并作为一个FlexMacro:

/flexbar FlexMacro ID=120 Texture='%macro120' Macro='My Raptor' Name='Raptor'

will create a macro on ID 120 with an Icon (number 120 on the icon selection pane of the WoW macro tool - I'll implement a GUI picker for this later) and an action of the macro we saved as 'My Raptor'
这将会在ID120建立一个宏并且有一个图标(WoW宏图标列表中的第120个图标,我将会在未来的版本中设计一个GUI选择界面)并且这个宏将保存为'My Raptor'这个名字。

Another I use is:
另一个我用的:

/flexbar FlexScript ID=120 Texture='%backpack' Script='OpenAllBags()' Name='Bags'

to give me a button to toggle all my bags.
这将会给我一个按钮,点击打开所有背包。

Special commands in FlexMacros:
FlexMacros里面的一些特殊命令:

In multiline macros executed through flexbar (runmacro/flexmacro/<macro> button in the editor) the following special commands are available. NOTE: These are ONLY available through these methods - standard WoW macros CANNOT use them.
在一些多行宏用flexbar(runmacro/flexmacro/编辑器的<macro>按钮)执行时下面的特殊命令是被允许使用的。
注意:仅仅用这几种方法可以使用,标准的WoW宏不能使用这些!

/fbwait delay

Will wait delay tenths of a second before continuing execution. Note that this releases execution back to the UI so will not freeze your UI. Also note, you will NOT be able to use this to delay spellcasting - just doesn't work that way.
这将会等1/10秒才继续执行下面的命令。注意,这将不会对UI执行所以不会锁住你的UI,你也要注意,你也不能用这个延迟你的施法时间,不支持这么工作。

/if <condition>

/else

/end

Provides a single level (you CANNOT nest) very simple if/then/else construct. The condition is any condition you would use in if='<condition>' in a flexbar command. I implemented this as a simple means of testing my conditionals - it will likely not be greatly enhanced. If you need more than it can offer - go to lua.
提供一个单独的级别(你不能镶套)十分简单的 if/then/else判断。这个条件(if <condition>)是任何你可以在flexbar命令if='<condition>'中应用的条件。我把这个作为一个简单的测试条件的实现的方法,不大可能再增强功能了。如果你想要更多功能,请去编辑lua。

/break

Terminates macro execution.
中止宏的执行

Special Commands for Any macros:
为所有宏设计的特殊命令:

The infrastructure of FlexBar allowed me to implement several slash command very easily -- they were a few lines of code and a few minutes so I figured what the heck:
Flexbar的基础结构允许我很容易的执行一系列缩写命令,只有几行代码并且只要几分钟来描述它究竟是啥:

/fbdoin delay /command

will execute /command in delay tenths of a second. Note that you CANNOT delay spellcasts with this.
将会在1/10秒后执行/command所对应当命令。注意:你不能用这个延长施法时间!

/fbcast spellname

This replaces /cast with the added feature that, if you don't specify a rank it uses the highest rank possible. /fbcast also casts pet spells. so /flexbar runmacro macro=['/fbcast Shadow Bolt' '/fbcast Firebolt'] will cause your imp to cast it's fire bolt while you cast your shadowbolt.
这个代替原始的/cast命令并扩展了它的功能,如果你没有指定等级,将会以最大等级释放法术。/fbcast还可以释放宠物技能。所以/flexbar runmacro macro=['/fbcast Shadow Bolt''/fbcast Firebolt']将会在你释放暗影矢的时候释放火球。

/fbuse itemname

This will use an item by name in your inventory.
这将会使用你背包中的物品(根据名字)。

/echo [#color] message

This will echo message above your head. The option color is the color you want it in, your choices are #green, #red, #blue, #yellow, #magenta, #cyan, #white.
这将会在你头顶显示信息,颜色选项是你要填写的,你可以选择#green(绿),#red(红),#blue(蓝),#yellow(黄),#magenta(洋红,紫),#cyan(青),#white(白)。

/print [#color] message

This will display message in the chat box. Color is the same as echo.
这将会在聊天窗口(频道窗口)显示信息,颜色和echo选项一样。

Special considerations for Scripts:
脚本的特殊选项:

Several functions are available in the FlexBar environment:
一些函数可以在Flexbar环境下运行:

FB_CastSpellByName(spellname) has the same advantages as /fbcast
FB_CastSpellByName(法术名称)和/fbcast有一样特性。

varname=Utility_Class:New() will give you access to :Print(msg,color), :Echo(msg,color) and TableCopy(tablevar) methods. Color can be any of the /echo or /print colors without the # on them or can be a table of RGB values. TableCopy returns a copy of the passed table to do copy by reference.
varname=Utility_Class:New()将会给你权利使用 :Print(信息,颜色),:Echo(信息,颜色)和TableCopy(表格值)。颜色将会是任何/echo或者/print的颜色不用敲入#,或者是RGB表格值(例子:(5,5,10))。TableCopy将会返回一个过去表格的备份来根据参考拷贝。

FBLastEvent and FBLastSource are global variables that will return the last event raised and the target that raised it.
FBLastEvent和FBLastSource是全局变量,将会返回上次发生的事件和触发事件的对象。

FBTimers["timername"] = Timer_Class:New(delay, recurring, message, sound, callback) can be used to set a timer. See WoW_UtilityClass.lua for details.
FBTimers["计时器名"] = Timer_Class:New(延迟,循环,信息,声音,反馈)可以用来设置计时器。参考WoW_UtilityClass.lua文件获得详细信息。

Finally - I recommend that for any long scripts you encapsulate the code in a function, load the script on='ProfileLoaded' then just call the function from the runscript/flexscript commands. The reason being that the code has to be compile to byte-code, and this ensures it only goes through that once.
最后,我建议你把所有的比较长的脚本压缩代码到一个函数里面,然后用On='ProfileLoaded'条件载入脚本,然后用runscript/flexscript命令来调用函数。这么做的原因是代码(脚本)被编译成了机器码,这能保证它只被执行一次。

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
高级专题 -FlexBar扩展
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Advanced Topics - Extending FlexBar
高级专题 -FlexBar扩展

PLEASE NOTE - THERE ARE CHANGES FROM 1.36
请注意:这些改变都是在1.36+版的基础之上!

Introduction: The creation of variants of FlexBar (FlexBarEx, the original Matrix Flexbar and adding the detection of fear to FlexBar) got me to thinking. The problem with these is that they fork the FlexBar Code, making it hard for their creators to keep up with changes I make in the original FlexBar. To help these folks out I've added in a few arctitectural features to ensure that they can add code in that will survive new versions (hopefully unchanged).
介绍:Flexbar的扩展版本(FlexBarEx,原始的MatrixFlexBar和增加恐惧检测的Flexbar)让我思考一个问题,这些版本个性化了原始的FlexBar代码,这让这些版本的作者很难保持和我的原始Flexbar版本同样的改进。为了去处这些个性化我增加了一些模块化特性,来保证他们增加的代码在升级版本时保持可用(希望不用更改)。

The addition of the Scripts Editor and the ability to run scripts on ProfileLoaded has paved the way to allowing these extension to be done within the FlexBar environment instead of through outside code modules.
脚本编辑器的加入和在个人档案载入时能运行脚本的功能对于允许在Flexbar环境下完成扩展功能而不是通过额外的编码模块来实现铺平了道路。

Handling WoW Events: (NOTE - This is changed since 1.36 PLEASE READ)
处理WoW事件:(注意:1.36版之后已经改变了,请详细阅读!)

In order to effectively code in the WoW environment, you must be able to register for its events and respond to them. In 1.32-1.36 this was done by making an entry in the FBEventHandlers table. This is problematic in that, if I am already listening for that event you could overwrite my code.
为了有效的在WoW环境下编程,你需要能注册事件然后相应之。在1.32-1.36版这些是通过在FBEventHandlers表格中创建一个接口来实现的。这个问题在于,如果我已经开始监听事件你可以覆盖我的代码。

In 1.37 I addressed this with 2 new functions:
在1.37版本我通过2个新的函数来解决:

function FB_RegisterEvent(event, name, callback, wowevent)
function FB_UnregisterEvent(event, name)

function FB_RegisterEvent(事件, 名称, 反馈, WoW事件)
function FB_UnregisterEvent(事件, 名称)

The call to RegisterEvent requrest the event name (either a WoW event like UNIT_HEALTH, or a FlexBar event like "mouseentergroup", a name for your handler for this event, a callback function to handle the event, and a flag to let FlexBar know if it is a WoW event or not.)
对于RegisterEvent的调用需要事件的名字(或者是一个WoW事件比如UNIT_HEALTH,或者一个FlexBar事件例如"mouseentergroup",一个让你来处理这个事件的名称,一个反馈函数来处理这个事件,以及一个标志让Flexbar知道这是否是一个WoW事件)。

Unregister simply takes the event and name and deletes it from the table.
取消登记简单的把事件和名字从列表中删除。

Note: For WoW events, FlexBar Code will execute first followed by other functions for that event in the order they were registered. For FB events, the event will be raised and acted on before the registered code is run.
注意:对于WoW事件,Flexbar代码将首先按照所有调用该事件的函数注册的顺序来执行,对于FB事件,事件将在已注册代码执行前被激活和运行。

Example:
例子:

function SDK_TargetChanged()
  FB_RaiseEvent("TargetChanged")
end
FB_RegisterEvent("PLAYER_TARGET_CHANGED","SDK_tgtchange",SDK_TargetChanged,true)

Save this as "SDK Target Change Event Addition"
按照"SDK Target Change Event Addition"保存。

then
然后

/flexbar runscript script='SDK Target Change Event Addition' on='ProfileLoaded'

and you will now get a Target Changed event in FlexBar.
现在你就可以得到可以在Flexbar中执行的Target Changed事件。

Conditionals:
条件:

Conditionals are also handled by a table (FBConditions). They are indexed by a lower case condition name (EG: FBConditions["hasbuff"]) and return either true or false - NOT NIL. Please see FlexBar_Conditionals.lua for examples.
条件也是关联于表(FBConditions)中的。他们与一个小写字母事件名挂钩(例如:FBConditions["hasbuff"])并且返回true或者false,不是NIL!详细参见FlexBar_Conditionals.lua的例子。

Two conventions: If a condition has a target (argument) and it is not provided, return false. If several targets are passed, and ANY of them are true, return true.
两个惯例:如果一个条件必须有一个目标(参数)但是没有提供,返回false。如果一组目标被通过,他们中任何一个的值是ture,返回true。

Slash Commands:
缩写命令:

Slash commands are easy to add with WoW_UtilityClasses.lua loaded:
缩写命令很容易通过WoW_UtilityClasses.lua的载入来加入:

MyCmd = Command_Class:New("MyCmd","/mycmd")

After this you can either add sub-commands with:
这样你可以这样加入替代命令:

MyCmd:AddCommand("command",callback,"group","usage")

and parameters to that command with
并且这样加入命令的参数支持:

MyCmd:AddParam("command","param",Required,Strict,{ types },{ bounds }, default)

Or, if you just require a simple command, override MyCmd:Dispatch(msg) to deal with it:
如果你仅仅需要一个简单的命令,覆盖MyCmd:Dispatch(信息)来达成:

function MyCmd:Dispatch(msg)
local util = Utility_Class:New()
util:Echo(msg)
end

These abilities will make FlexBar extensible for other people, without requiring that they remake all their changes each version.
这些功能将让flexbar具有扩展性,而使那些开发者不必每次版本更新的时候都要重新编译代码

[ ] [返回上一页] [打 印] [收 藏]
 
 
   
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright 2005-2006 YesDown.Net All Rights Reserved
版权所有 下载天空 魔兽世界插件中文站