“MuseLive Documents Alpha 2.5.6 Project”的版本间的差异
(→一般原生参数) |
(→Background) |
||
| (未显示同一用户的1个中间版本) | |||
| 第156行: | 第156行: | ||
:: <code>SolidColor</code>:表示背景为纯色。 | :: <code>SolidColor</code>:表示背景为纯色。 | ||
| + | |||
| + | :: <code>Transport</code>: 表示背景为透明的。此时不需要<code>argument</code>。 | ||
: <code>argument</code>: | : <code>argument</code>: | ||
| 第255行: | 第257行: | ||
命令格式:<code>Exit=<exitCode></code> | 命令格式:<code>Exit=<exitCode></code> | ||
| − | : <code>exitCode</code>:退出代码。''一般无用,返回<code>0</code>即可'' | + | : <code>exitCode</code>:退出代码。''一般无用,返回<code>0</code>即可''。 |
: 举例: <code>Exit=0 #退出程序并返回0</code> | : 举例: <code>Exit=0 #退出程序并返回0</code> | ||
2024年2月6日 (二) 20:50的最新版本
工程文件格式
概念解释
工程
默认是指程序所在目录下的project.mlp文件,目前支持这一个指定名称。
这是一个包含了一堆存放描述和指令的文件。
路径
这里的路径可以是相对路径也可以是绝对路径。
相对路径目前是指依程序所在路径为参考的,而不是工程所在路径。
基本命令原理
命令是如何在程序内部分割的
所有命令以行为基础,换行代表一个新的命令。
每一行中用空格或者水平制表符分隔开来形成许多部分,但是等号会是一个例外,无论它两边有多少空格(制表符)都会将两边的部分连成一个整体,仍为一个部分。
当然等号也有例外,一个每一对双引号中的第二个会结束一个部分,所以譬如"a"=b的语句中的等号不会连接左侧,此语法不对。(实则懒得合并左侧)
注意:请不要使用Annoy+数字形式的键名,如Annoy001,这些都是保留键名!
对于某些键的值是多个的,一般会用逗号隔开,请尽量不要在这些值之间插入不必要的空格,避免发生程序对这个值不可识别。
匿名值与键/值
value1 key1=value2 #comment
value1代表的是一个匿名值,一般是有程序按照既定顺序判定它的意义。
key1代表一个键,它位于等号左边,用于描述右边的值的意义。
value2代表一个值,它位于等号右边,被左边的键名赋予意义。
comment是一个注释,它不会被程序加载,不对程序运行产生影响。
我们称一个类似value1或者key1=value2的部分为记录或参数。
块
blockHeader {
key1=value1
key2=value2
}
blockHeader代表块的头部,它的作用是省略在大括号内的头部定义,所以它等效于:
blockHeader key1=value1
blockHeader key2=value2
注意:因为一对双引号两端只能为空格或者等号,所以譬如"a" {的块头部的双引号与大括号之间不可缺少空格。(实则懒得多检测一个字符)
工程头部
第一行必须是Project.Version = "2.0"这是工程版本声明。暂时不支持版本向下兼容,这个也许我会做的。(嗯,也许)
基本格式
页码 (+ 按键) + 一堆值...
参数列表
键名可选参数
键名可选参数是指键名可以省略的参数,但是它们必须在一行代码中按照顺序书写。
目前支持的键名可选参数有:Page和Key
完整的一行记录应该是类似这样的代码:Page="*" Key="A" ...
因为Page和Key是键名可选参数,所以:上述代码可以等效于:
"*" Key="A" ...
或
Page="*" "A" ...
或
"*" "A" ...
其中第三种的会按照默认顺序:Page, Key自动解析为Page="*" Key="A" ...
当然当Page或Key如果没有省略键名,它的位置是可以随意的:
"A" Page="*" ...
它会先搜索到Page键然后搜索下一个键名可选参数Key,而Key的键名不存在,所以它会读取第一个匿名值作为Key的值。
Page
表明命令所在页码。
命令格式:Page=<page number>
page number是指当这行命令需要记录到的页码。
- 其的值可以为
*、@或者一个1到32的数字。
@是一个特殊的页码,它代表初始化页,所有加入到初始化页的命令将会在程序加载工程时被执行,执行完毕后就会被释放。当这行命令将写入初始化页后面的Key应当省略,否则会报错。
*代表全部页码即1到32,包含它在的命令将存到全部页面。
- 未来可能会支持范围页面以及混合页面,敬请期待。
Key
表明该条命令所对应的按键。
命令格式:Key=<key>
key是指当这行命令将会被哪个按键触发。目前允许同页面中有同样Key值的多个命令。未来可能还会支持混合按键值,敬请期待。
- 其的值为Winforms中
Keys的枚举值的名称或者数值,具体可参阅Keys Enum (System.Windows.Forms) | Microsoft Docs。
一般原生参数
Audio
播放指定音频。
命令格式:Audio=<audio path>
audio path:音频文件路径。
- 举例:
Audio="sample.wav" #播放音频sample.wav
Background
设置背景。
命令格式:Background=<type>,<argument>
- 初始化时的默认值是
Background=SolidColor,0,32,64。
type:背景类型,包含Image、SolidColor。
Image:表示背景为图片。
SolidColor:表示背景为纯色。
Transport: 表示背景为透明的。此时不需要argument。
argument:
- 当
type为Image时:<argument>为<image path>,<image layout>,<buffer>。
- 当
image path:图片路径,暂不支持透明图片。
image layout:表示图片的布局方式,包含None、Tile、Center、Stretch、Zoom。
None或0:保持原大小,与舞台左上角对齐。
Tile或1:平铺。
Center或2:居中。
Stretch或3:拉伸。
Zoom或4:自适应(保持比例放大到最大(保证图片不超出舞台边界))。
- 其的值为Winforms中
ImageLayout的枚举值的名称或者数值,具体可参阅ImageLayout Enum (System.Windows.Forms) | Microsoft Docs。
- 其的值为Winforms中
buffer:是否缓存,可填入一个bool值,即true或false,如果开启缓存则会在加载时写入内存,如果关闭则会在调用到该命令时才会读取文件。如果图片较大,开启可以减少延迟,但是关闭的话可以优化内存用量。
- 当
type为SolidColor时:<argument>为<red>,<blue>,<green>。
- 当
red:RBG值中的红色值,该值应当为是0~255。
blue:RBG值中的蓝色值,该值应当为是0~255。
green:RBG值中的绿色值,该值应当为是0~255。
- 举例:
"Background=sample.png,Zoom"或"Background=sample.png,4"把背景图片设置为sample.png,并自适应大小。
"Background=SolidColor,255,255,255"则是设置背景为纯白色。
- 未来可能会支持多个背景重叠(不过这功能应该是通过一个单独的多图层渲染器实现,而不是调用多个参数),敬请期待。
Beep
发出哔哔声。
命令格式:Beep=<frequency>(,<duration>)
frequency:声音频率,该值应当为是37~32767,设置为0表示发出默认的声音。
duration:发声时长,单位是毫秒,数值应为非负整数。
- 举例:
"Beep=523,1000" #发出C5的声音一秒
"Beep=0" #发出(默认的)滴的一声
- 该操作可能在部分机器上不可用,并且可能与系统当前的主题或声音设置有关。
ChangePage
切换当前页码。
命令格式:ChangePage=<page number>
page number:目标页码(只允许为1~32)。
- 举例:
ChangePage=12 #设置绑定的跳转页面为第12页
Cursor
设置鼠标在VisionStage上的图标。
命令格式:Cursor=<cursor>
- 初始化时的默认值是
Cursor="Default"。
cursor:光标样式名称。
Default:默认值。
No:无光标。
- 以上仅为常用的两个值,实际上共有28个值,它们是Winforms中
Cursors的所有光标(属性)名称,具体可参阅Cursors 类 (System.Windows.Forms) | Microsoft Docs。
- 以上仅为常用的两个值,实际上共有28个值,它们是Winforms中
- 举例:
Cursor="No" #隐藏光标
Execute
执行系统命令。
命令格式:Execute=<command>
command:所要执行的系统命令(内部实际执行方式CMD /U /C command)。
- 举例:
Execute="shutdown /h" #休眠计算机
- 因为该命令可能会被一些恶意工程制作者干一些不好的事情,存在一定的风险,所以当工程中存在该命令时会产生警告,如果信任该工程文件,则忽略警告即可。
Exit
退出程序。
命令格式:Exit=<exitCode>
exitCode:退出代码。一般无用,返回0即可。
- 举例:
Exit=0 #退出程序并返回0
SetStage
设置舞台的长宽。
命令格式:SetStage=<column>,<row>
column:列数,即是舞台的宽度(能竖着放几排视频位置),该值是必须至少为1的整数。
row:行数,即是舞台的高度(能横着放几排视频位置),该值是必须至少为1的整数。
- 举例:
SetStage="5,6" #将舞台分割为5列,6行
StagePosition
设置该命令后视频显示的位置。
命令格式:StagePosition=<x>,<y>
- 该参数仅对
Video有效,默认值为0,0。
- 请记得将该参数放在
Video前,否侧会因为顺序性而失效。
- 舞台的坐标系是向右为x轴为正,向下为y轴正方向。
x:舞台上的x坐标位置,这个值从0开始。
y:舞台上的y坐标位置,这个值从0开始。
- 举例:
StageSeat="0,1" #设置video的显示坐标为0,1
Stage_FullScreen
设置全屏。
命令格式:Stage_FullScreen=<value>
value:可填入一个bool值,即true或false,true表示使舞台全屏化,false表示使舞台恢复。
- 举例:
Stage_FullScreen="true" #使舞台全屏化
SystemSound
发出哔哔声。
命令格式:SystemSound=<sound>
sound:播放的系统声音名称。
- 可用值:
Asterisk、Beep、Exclamation、Hand、Question。
- 可用值:
- 它们是.NET中
SystemSounds的所有可以播放的系统声音的名称,具体可参阅SystemSounds 类 (System.Media) | Microsoft Docs
- 它们是.NET中
"SystemSound=Beep" #发出滴的一声
- 该操作在不同的系统上可能有所不同,并且可能与系统当前的主题或声音设置有关,目前暂不支持设定播放的音频集。
Video
播放视频。
命令格式:Video=<video path>
video path:视频文件路径。
- 举例:
Video="sample.mp4" #播放视频sample.mp4
仅用于初始化参数
Alias
设置别名。
命令格式:Alias=<command>,<alias>
- 给命令取一个别名。不可以取已有参数的名称,别名不是宏定义,仅可用于替代参数名。
command:原命令名称或者其别名。
alias:期望的别名。
- 举例:
Alias="Audio,a" #设置Audio的别名为a,之后可以用a代替Audio,像这样:a="example.wav"
其他内容
字符串
注意:双引号只允许两种使用形式:"Key=Value"(即"string")或Key="Value"。
注释
整行注释
#comment
第一个字符为井号的行会被注释掉。
尾部注释
abc #comment
以井号为开头的部分为注释,这种注释生效需要保证前面为空格。
所以上面的内容等效为abc。
以下内容不算尾部注释:
abc#comment
因为井号前面缺少空格所以它会被完整识别为abc#comment。
更多的完整例子
- 例一:
"@" ChangePage=1
- 这个表示在初始化时跳转到页面1。
- 注意:由于页码
@和*是符号,为了不被识别为操作符,所以应该用双引号括起来。
- 例二:
"*" 56 Audio="./sample.wav"
- 这个表示在所有页面记录:当按下
A时播放当前目录下的sample.wav。
- 也就是说,当当前页码为1时,按下
A就播放sample.wav。
- 注意:
56并不是A的ASCII值,而是WinForms中Keys.A的枚举值。
- 例三:
3 "D1" Video="sample.mp4" Stage="2,1"
- 这个表示在页面3记录:当按下数字键1时在第3列第2行播放当前目录下的
sample.mp4。
- 如果有空格为了表示为一个部分要加双引号,没有空格也可以加双引号。