上方第2行代码主要是对【暂停/播放】按钮进行定位,【暂停/播放】按钮占用多少长宽的区域。
上方第3行代码主要指定【暂停/播放】按钮的样式:使用什么颜色、按钮的大小。
-----------------------------------------------------
我们在对【暂停/播放】按钮这个元素更为仔细的举例:
当3行代码写成:
lo = add_layout("playpause")
lo.geometry = {x = rjno1X , y = rjno1Y , an = 5, w = 30, h = 20}
lo.style = osc_styles.rjno120Buttons
时,(仅改动第二行)
其中的【rjno1X】,【rjno1Y】指的就是OSC界面左上角的坐标(0,0),【暂停/播放】按钮现在就显示在OSC界面左上角,占用30*20像素的区域,所以你会发现每个元素的坐标轴是都带有【rjno1X】,【rjno1Y】,因为每个元素的定位都是从OSC界面左上角开始计算。
当3行代码写成:
lo = add_layout("playpause")
lo.geometry = {x = rjno1X + 5, y = rjno1Y + 6 , an = 5, w = 30, h = 20}
lo.style = osc_styles.rjno120Buttons
时,(仅改动第二行)
【暂停/播放】按钮显示的位置就会从之前OSC界面左上角向右移动5个像素,向下移动6个像素。
-----------------------------------------------------------
当你知道这些变化之后,你就可以在【my-osc.lua】中进行实践和观察变化了:
打开【my-osc.lua】,找到这3行代码所在的位置,把第二行改成
lo.geometry = {x = rjno1X , y = rjno1Y , an = 5, w = 30, h = 20}
,保存后执行第6步,会发现【暂停/播放】按钮出现在了左上角。
在打开【my-osc.lua】,找到这3行代码所在的位置,把第二行改成
lo.geometry = {x = rjno1X + 5, y = rjno1Y + 6, an = 5, w = 30, h = 20}
,保存后执行第6步,会发现【暂停/播放】按钮在之前的位置上向右向下移动了5和6个像素。
好奇的你肯定会问第二行中【an=值】有什么用,最简单的方法就是只改变这个值,看元素在位置上的变化,an的值的范围是1到9,如果值超出这个数字,会导致OSC界面消失,发生这种情况改回1到9即可。
lo.geometry = {x = rjno1X , y = rjno1Y , an = 1, w = 30, h = 20}保存后执行第6步,记住位置
lo.geometry = {x = rjno1X , y = rjno1Y , an = 5, w = 30, h = 20}保存后执行第6步,观察位置
lo.geometry = {x = rjno1X , y = rjno1Y , an = 9, w = 30, h = 20}保存后执行第6步,观察位置。
你会发现像图上这种变化,an = 5时,【暂停/播放】按钮的中心会作为坐标(0,0)的坐标点,当an = 1,an = 9时,【暂停/播放】按钮的左下角,右上角会成为(0,0)的坐标点,所以定位之后,还需要根据an的值对定位进行修正,如果你不擅长这个,那么照抄【修改过的OSC.lua】中已经修改过的值,不要改变或者进行较少改变,这样调整比较容易。
并且当an对文字元素进行定位时,an=5时,文字居中显示,文字数量增加则会从中心往2边增加宽度,an=1时,文字是左对齐向右增加,an=9时文字右对齐向左增加。
12、更改元素的背景色,大小。我们还是以上方的【暂停/播放】按钮为例:
lo = add_layout("playpause")
lo.geometry = {x = rjno1X + 5, y = rjno1Y + 6 , an = 5, w = 30, h = 20}
lo.style = osc_styles.rjno120Buttons
上方第三行代码主要指定【暂停/播放】按钮的样式:使用什么颜色、按钮的大小,但是你从文字上看不出这些内容,那么这些设定的值在哪边呢?
记得第7步时,你往【my-osc.lua】的【local osc_styles = {】下方添加了10行代码,其中有一行是:
rjno120Buttons = "{\\blur0\\bord0\\1c&HCBCBCB\\3c&HFFFFFF\\fs20\\fnmpv-osd-symbols}",
没错,当lo.style = osc_styles.后方的值是【rjno120Buttons】时,就会去自动获取【rjno120Buttons】 =后面填写的颜色值、元素大小的值等等等等。
【local osc_styles = {】下方10行,每一行定义的都是一组不同的颜色,元素大小等值,你可以根据自己的要求添加更多的行数,只需要每一行【=】号左边的名字不同即可。
以此类推,当你想要【暂停/播放】按钮使用这行的颜色值、元素大小的值时:
rjno150Buttons = "{\\blur0\\bord0\\1c&HCBCBCB\\3c&HFFFFFF\\fs25\\fnmpv-osd-symbols}",
【=】号左侧是【rjno150Buttons】,那么原先三行只需要改成(只变动了第三行):
lo = add_layout("playpause")
lo.geometry = {x = rjno1X + 5, y = rjno1Y + 6 , an = 5, w = 30, h = 20}
lo.style = osc_styles.rjno150Buttons
13、当你明白这些之后,剩下就是体力活了,定义每个元素的xy轴,微调坐标位置,选择每种元素使用哪一行的颜色值、元素大小的值即可。
14、如何理解【local osc_styles = {】下方,这些代表样式的行【=】号后面的值:
以
rjno150Buttons = "{\\blur0\\bord0\\1c&HCBCBCB\\3c&HFFFFFF\\fs25\\fnmpv-osd-symbols}",
为例,
每一行后面的值都是用ASS 字幕格式规范表示的,每个值之间用【\\】符号隔开,ASS 字幕格式规范参考:
https://github.com/weizhenye/ASS/wiki/ASS-%E5%AD%97%E5%B9%95%E6%A0%BC%E5%BC%8F%E8%A7%84%E8%8C%83
例子中的值包括:
blur0:高斯模糊值为0,也就是不高斯模糊
bord0:边框为0,如果是bord1,那么就显示1像素宽度的边框,但OSC界面中好像只有OSC背景和OSC进度条背景才支持显示边框
1c&HCBCBCB:元素颜色是CBCBCB,主要更改这个值,【1c&H】这4个字符请勿修改
3c&HFFFFFF:元素边框颜色是FFFFFF,【3c&H】这4个字符请勿修改
fs25:元素大小25像素,如果元素是文字的话,主要更改这个值,文字字体大小为25
fnmpv-osd-symbols:不需要看,照抄即可
注意事项:
当你使用取色器取到你想要的颜色的值后添加到1c&H或者3c&H后方时,你会发现显示的颜色和你预期的颜色根本不一样,这是为什么?
通常情况下,取色器中获取的颜色的值的顺序为RRGGBB,而ASS字幕格式规范中的值的顺序确是倒过来表示为BBGGRR,那么如何解决这个问题?
比如,取色器中你获取的一种蓝色的值是#3942f7,也就是代表RR=39,GG=42,BB=f7,当你把这个颜色值放到1c&H或者3c&H后方时就要变成:
#3942f7
1c&Hf74239
3c&Hf74239
也就是把39和f7调换下位置。
OSC样式文件的下载和使用:
OSC样式文件的提交和重命名:
本文地址:http://www.sd124.com/article/2018/0418/221937.html
《MPV的播放器 MPV-EASY Player最新版下载+OSC外观样式制作教程+OSC样式下载提交(2)》由闪电下载吧整理并发布,欢迎转载!