- UID
- 3849
- 主题
- 注册时间
- 2010-6-28
- 在线时间
- 小时
- 最后登录
- 1970-1-1
签到天数: 268 天 [LV.8]以坛为家I
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?点击注册
x
本帖最后由 yu_fei_527 于 2012-11-16 14:32 编辑
lssliderfoo.dll这个模块适合用来做音量滑块调整和winamp进度条,但是在win7中有时能用有时不能用,确实不大灵光,希望LS开发团队对这个dll能再次编译。
这个问题想了很久,又找到了另一个音量控制模块tVolEzy.dll,它不能做滑块,只能通过点击和快捷键来控制音量,但是通过代码和算法的编写与其它模块搭配也可以实现滑块来控制。因为并不是很完善,不推荐做实际应用,可以讨论一下看有没有人能更完善些。就不说得太细了,因为涉及到的东西太详细说并不利于叙述。下面说说这两种方法:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
一。做个按钮点击式的音控,这是非常简单的,加载模块后一句代码就搞定。这里效果不是重点,只讨论算法和思路。
1. 加载tVolEzy.dll模块。
在rc文件中添加这句*NetLoadModule tVolEzy.dll
2.*label volup
volupalphamap 这是xlabel模块,做的一个名为volup的音量增大按钮,其它的属性描述代码不多说,关键代码
就那么一两句。
volupalwaysontop
;volupwindowzorder
;volupx $ResolutionX-xTrayCurrentWidth$
volupx $ResolutionX-300$
volupy $xTaskbarY-38$
volupheight 16
volupwidth 16
*volupDockedTo xTray 音量增大按钮跟随托盘位置变动,这是在我的一个主题里这样做的,如果只是单纯做音量调整按钮,这句完全可以不要。
volupPaintingMode ".image"
volupimage volup.png
volupHoverimage voluphover.png
voluponleftclickDown !tVolEzyUp 3 关键的代码,点击这个按钮,音量增大3,默认值记得是为1(不知道记错没~)可以在bang命令后自己加个自定义数字, !tVolEzyUp这个bang命令来自于 tVolEzyUp模块的readme,可自行去翻阅。
xTrayOnResize !ParseEvars !LabelMove volup %#-xTrayCurrentwidth-40%# %#volupy%# 音量增大按钮跟随托盘位置变动,这是在我的一个主题里这样做的,如果只是单纯做音量调整按钮,这句完全可以不要。
-=================================================
*label voldown 这是个音量减小按钮,不多说,同上。
voldownalphamap
voldownalwaysontop
voldownx $ResolutionX-300$
voldowny $xTaskbarY-18$
voldownheight 16
voldownwidth 16
*voldownDockedTo volup
voldownPaintingMode ".image"
voldownimage voldown.png
voldownHoverimage voldownhover.png
voldownonleftclickDown !tVolEzyDown 3
xTrayOnResize !ParseEvars !LabelMove voldown %#-xTrayCurrentwidth-40%# %#voldowny%#
托盘与任务栏中间的两个小黑箭头就是音量调节按钮,只能通过点击来起作用。
3.这个模块也可以做快捷键来控制音量,在hotkey.rc中加代码即可:
*Hotkey Ctrl RIGHT !tVolEzyUp 1
*Hotkey Ctrl LEFT !tVolEzyDown 1
-===========================================================
二。做个滑块按钮,本来用lssliderfoo.dll做音量滑块调节是最有效的,可是在win7下不能用,我们就另想办法。下面这个举例就不列图了,脑海里有个水平滑块就可以了,虽然代码只有几行,但是真的很难做出来,因为涉及到xlabel高级代码的灵活运用。
做这种东西已经类似于编程了,最好能思维缜密,事先画个流程图出来。不然凭空想的话,有点麻烦。这个滑块仍然用tVolEzy和xlabel来做,还另加一个lsbox模块。
*Label Slide 做个handle即把手,把柄,就是可以拖动的那个东西(脑海里想像一个水平滑块)
SlideX 100
SlideY 0
SlideWidth 5
SlideHeight 9
SlidePaintingMode .singlecolor
SlideColors ff0000
SlideMoveable true 这个handle可以拖 动
SlideMoveable .horizontal 只能水平平移
SlideMoveButton .left 只能通过鼠标左键来平移
SlideMoveModifierKey .none
SlideMoveArea 0 0 105 9
SlideNoMoveCursor true
SlideFireOnMoveDuringMove false
SlideOnRightClickUp !none
SlideAlwaysOnTop true
-====================-=========
*Label SlideBack 做个框,handle只能在这个长方形的框里移动,handle在这个框里移动时,越往左音量越小,越往右音量越大。这一段还只是定义本身性状,功能上的定义在后面。
SlideBackPaintingMode .singlecolor
SlideBackColors eeeeee
SlideBackX $ResolutionX-132$
SlideBackY $ResolutionY-13$
SlideBackWidth 129
SlideBackHeight 10
SlideBackStartHidden true
SlideBackOnRightClickUp !none
;SlideBackOnFocusLost !LabelHide SlideBack
SlideBackAlwaysOnTop true
-===============================
*SlideBackModuleHook !LabelLSBoxHook Slide 将handle与 音量调节框挂靠在一起,这条代码是因为加载了lsbox.dll,把各音量控制元素加载到一个盒子中。代码用法见lsbox的readme。
CurrentVol "[volume]" 定义一个变量,值为当前音量
CurrentMute "[mute]" 定义一个值,判断是否静音
tVolEzyVolumeChangedCommand "!SetEvar CurrentVol #VOLUME#" 滑块拖动导致音量改变后,将值赋给刚才定义的currentvol,这个值是个数字。前半段代码出自tVolEzy的readme,后半段出自xlabel的 Text Escape Sequences 和 ParseEvars高级用法。
tVolEzyMuteChangedCommand "!SetEvar CurrentMute #MUTE#" 道理同上。
SlideOnMove !ParseEvars !execute [!tVolEzyDown %#%[ifeval(exportedevar('CurrentVol'),'>',exportedevar('SlideCurrentX'))]CurrentVol-SlideCurrentX[else]0[endif]%%#] [!tVolEzyUp %#%[ifeval(exportedevar('CurrentVol'),'<',exportedevar('SlideCurrentX'))]SlideCurrentX-CurrentVol[else]0[endif]%%#] 移动handle时如果当前音量大于音量调节框的x 位置值,就做音量减小动作,减小的幅度(值)是当前音量和handle当前x位置的差;如果当前音量小于音量调节框的x 位置值,就做音量增大动作,增大的幅度(值)是handle当前x位置与当前音量的差;如果两个值相等,就不作调节。这个地方有点难以理解,有兴趣 的可以作个图,实际上就是当前音量的值与handle在调节框里的x位置建立关联,以此来判断是要调大还是调小,要调多少。这些代码的学习同样要看xlabel的高级用法。
实际上这个音量滑块没有做完,因为没有精力去完善,而且也比较懒散,还有几个漏洞,一个是滑块当前位置的记忆,当LS刷新之后,handle会到最右,另一个是这个东西只能拖控,目前想不到办法实现点控,因为handle的座标如何跟随鼠标座标是个难点。就像阿卜牧说的,3RVX用起来更爽,做这个确实比较伤脑筋,所以在用LS时最好的办法还是用3RVX,或者等lssliderfoo.dll的完善。
|
评分
-
参与人数 1 | 心动值 +1 |
活跃值 +10 |
收起
理由
|
阿卜牧
| + 1 |
+ 10 |
还是挺给力的,yu_fei_527 辛苦了。 |
查看全部评分
|