Nowplaying.dll播放器制作教程
作者:我的三百块QQ :724269874
常驻群:7750558
此教程写给想要自己动手制作一些皮肤的朋友。
由于本人其实也没学多久,只来得及对播放器插件做一些了解,所以就拿播放器“举个栗子”。
第一章 ini文件
现在【首先】第一步是要了解为什么ini文件是什么?为什么是这么写的。
ini是initial的缩写,这里翻译为【初始化】,不是头文字!
所以它是用来对操作系统或是特定程序初始化【或者是进行参数设置】所以显然一个皮肤的ini在雨滴中在使用过程中,它是用来进行一个参数设置,在启动过程中就是一个初始化的作用了。
那么对于编写皮肤的人,就更注重一个参数设置的作用了。
我们【接下来】说一下ini文件中的格式问题,格式有三块内容:
节、参数、注解
节简单来说就是两个方括号([]英文符号)夹着一玩意儿就是一个节
参数简单来说就是一个等式,或者说是定义式
这两样东西在任何皮肤的任何一个段落中都是必不可少的
第三个注解,注解就是跟在;(英文符号)之后,回车(自动分行不算)之前的所有东西,通常用来说明皮肤的使用方法或者是一个节的作用等等。
至于优先级问题就是节和注释同一行内第一个字符是谁了,参数总是最后的
那ini文件怎么来的呢?就是新建一个文本文档然后将后缀名从txt改变成ini就行了。
例子1-1:
Measure=Plugin
Plugin=NowPlaying
PlayerName=#PlayerName#
PlayerPath=#Path#
PlayerType=TITLE
DisableLeadingZero=0
;~!@#¥%……&*()——+
所以可以看出这个例子中有一个节,六个参数,一个注解(虽然这里的注解没什么意义)
第二章 rm条件下的ini格式
当ini的编写格式这个大背景了解完之后呢,我们就要详细了解一下在【rm】这个特殊环境下编写格式又有什么【特殊的要求】。
有时候大家在下了一个皮肤之后发现打开皮肤后rm跳出一个警告框,说【这个皮肤"***\&&&.ini"不包含任何meters,将被停用。该文件可能已损坏或它可能不是一个有效的皮肤。】这说明rainmeter的皮肤【至少需要】一个【meter】
简易来说meter就是一个显示项,作用是用来显示东西。什么东西都不显示那要这个皮肤干什么呢╮(╯▽╰)╭你说是吧。
大家刚开始用rainmeter时肯定都见过一些系统信息类的皮肤,那么光有meter可不能显示这些信息,所以这时候就需要一个【measure】直接翻译就是测量。那把测量值绑定到meter上那就能显示出测量的信息了。
【下面】来简略介绍一下meter和measure【如果你已经看过XANCI的高级教程的这两部分那么你可以跳过这一段】(强烈推荐!!!)当然如果英语过得去的话可以考虑看一下rm官网上的说明,下面会附网址
measure有大致十三种(可以称作方法的东西- -)
一、IfAction,条件语句
二、Calc,方程
三、CPU,CPU信息
四、FreeDiskSpace,磁盘剩余空间
五、Memory,内存信息(总信息)
六、NetIn/Out/Total,网络流量的进、出、总和
七、PhysicalMemory,物理内存(内存条)
八、Plugin,插件【此教程重点所在】
九、Registry,注册表
十、Script,脚本
十一、SwapMemory,虚拟内存(硬盘)
十二、Time,时间
十三、UpTime,已开机时间
http://rainmeter.net/cms/Measures_beta
Meter有大致九种
一、Bar,长条
二、Bitmap,多帧png
三、Button,三帧png
四、Histogram,柱状图
五、Image,普通png文件
六、Line,折线图
七、Rotator,物体平行于屏幕旋转(轴垂直于屏幕)
八、Roundline,圆轨曲线
九、String,文字
http://rainmeter.net/cms/Meters_beta
总的来说就是:Measure的方法取得目标信息后作为变量被Meter使用,meter给measure的值加上一个特定的显示方法,最后由Rainmeter解读并显示出来。Meter可以用九种形式来表现十三种measure的内容。
第三章 Nowplaying的设定环境
【下一个】我们将详细解说Nowplaying这个插件的用途
首先是该插件需要一个主测量项和一个第二测量项,其中主测量项是固定的叫做PlayerName,其对应的值是播放器名称(支持列表详见http://rainmeter.net/cms/Plugins-NowPlaying_beta)第二测量项一般属于
它能取得作者ARTIST ,专辑ALBUM,歌曲名称TITLE,封面COVER,当前播放文件的路径FILE,歌曲总长度DURATION【60进制模式】,当前进度
POSITION 【60进制模式】,(提别要注意的是当Duration和Position在String的meter模式下显示的值是以MM(分钟):SS(秒钟)的形式呈现,而在别的meter模式下都是以纯秒数的形式呈现)当前进度PROGRESS【无百分号的百分比模式,值为0-100】,评分RATING【值为1-5】,单曲重复REPEAT【0为关闭,1为开启】,随机播放SHUFFLE【0为关闭,1为开启】,播状态STATE 【三种状态都属于播放器已开启的状态,0为停止状态,1是正在播放,2是暂停状态】,播放程序状态STATUS 【0为已关闭,1为已开启(包括播放暂停停止)】,音量VOLUME【值为0-100】。
如果去过刚才那个网址了你们估计看得到了一个PlayerPath,它的定义是一个完整的播放器路径【完整是指从盘符开始一直到.exe结束的一段路径文字】可以应用于OpenPlayer的!bang指令,关于!bang指令后面会解释。
TrackChangeAction可以看做一个条件动作(学过vb的同学比较容易理解),条件是音轨变化(比如下一曲,上一曲等等),行为则是你定义的了可以产生的行为叫做!bang指令,Nowplaying插件内的!bang我会解说一下,其它的可以参考官网资料(http://rainmeter.net/cms/Bangs_beta)和(http://rainmeter.net/cms/Plugins_beta很多Plugin都会拥有一个或多个的特定!bang指令,这里略过,略过。。。)
DisableLeadingZero(0禁止(默认值),1允许)是指有一些较短的歌曲在十分钟以下一分钟以上,这时会将第一位分钟数略去,如果喜爱格局或者不分轨音乐,那么这里就需要将它禁止掉,它产生效果的对象就是String状态下的Duration和Position,这一项必须写在主测量中(即带有PlayerName的Measure中)所以注册量的写法是这样的:
例3-1
Measure=Plugin
Plugin=NowPlaying
PlayerName=Foobar2000
;这个就是主项
PlayerType=Title
;这个就是副项
PlayerPath=C:/Tools/Music/Foobar/Foobar2000.exe
DisableLeadingZero=0
;不允许消除带头的零
第四章 Nowplaying的!bang指令
在这里的!bang指令叫做!CommandMeasure,大致格式为!CommandMeasure "MainMeasure" "action"
此处的MainMeasure即带有Playername的Measure项的节的名字
Action有14种
1、暂停Pause
2、播放Play
3、切换播放和暂停PlayPause
4、停止播放Stop
5、下一曲Next
6、上一曲Previous
7、打开播放器OpenPlayer
8、关闭播放器ClosePlayer
9、打开或关闭播放器TogglePlayer(视先在状态而定)
10、切换到n的百分比位置SetPosition n(n为一个0到100的常数当带有正(负)号时则代表前进(后退)n%的进度)
11、打分SetRating n(n为一个0到5的值)
12、随机播放模式切换SetShuffle n(n为1,0和-1,分别对应打开,关闭和切换)
13、重复模式切换SetRepeat n(n为1,0和-1,分别对应打开,关闭和切换)
14、设置n的百分比的音量SetVolume n(n为一个0到100的常数当带有正(负)号时则代表增大(减少)n%的音量)
那么介绍就到这里告一个段落了。
第四章 Tricks
曾有人问过在一些皮肤里出现的X=r或者Y=R之类的是什么意思,r的意思就是上一个X的值而R则是上一个X的值再加上W的值。而类似于5r,-10r则是r+5和r-10的意思。如果利用得好的话会给皮肤的制写带来很大的方便(单位都是像素)。 先支个持再继续看吧 楼主辛苦了 lz码字辛苦了啊 我很想学 没基础可以吗 技术文啊,不容易,支持个先mark 这个必须的顶 楼主辛苦了 顶一个~ qwt19900802 发表于 2012-5-21 20:58 static/image/common/back.gif
lz码字辛苦了啊 我很想学 没基础可以吗
嗯 现在没时间学 过一段时间等有空了再学 到时候不懂的还有问一下大神啊 qwt19900802 发表于 2012-5-22 21:46 static/image/common/back.gif
嗯 现在没时间学 过一段时间等有空了再学 到时候不懂的还有问一下大神啊
这 。。。好吧 暂时把你看成小神吧 qwt19900802 发表于 2012-5-23 12:44 static/image/common/back.gif
这 。。。好吧 暂时把你看成小神吧
无所谓喊什么了 你知道的比我们多就行了 虚心学习中