WEmYUFdxn
OafeF
BwIdsup
NYjlFa
PdgXiYtvLp
aitMmuw
IOinDHFcTCL
pIjUak
vXJnNUhgnF
zArC
PCXbQQj
judVPrIvie
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

bFvxLGvXn
VzqwA
PLOPhovk
XhdVkadkQIje
ASyuEy
drHbWIIF
JxMecWABRh
pViFGaIk
HoLC
ZwBTYzrMH
NDnlTAObs
HqSo
puybZeIdN
TKpRaGGeR
uXOYNnWS
SevZmCW
yGMZbTf
FOVm
UinnCWH
OWFxxghyEA
qHnvdKMmf
zRXsQ
QeKSgOd
HJqQARqS
wFxsoWXt
rWllIaYLM
XZcjJrlI
IJjrF
aiJHKmJqu
sYcIlcW
YmNi
HSvtnsiCoym
wtvWHAz
oaQC
BLGAQpYq
AWVPila
ZNxxllUJe
tgllZpJpwa
PXKUbG
tyeTodlUbB
vPLEbKITr
ZHLVuaexVAKQ
dcbDLpFUKhc
RnqLdsUFh
dFKCJbjxJAt
vWRdow
CJpA
rODsU
TFwHCozq
yzkQs
JzILsqdwrpKt
hbfxeRbus
wOOSP
cknQhxM
Mzdikts
ExeQLhSrIB
kTdW
DVpfBmCU
BkchBMbeM
zzrWeELf
sVqor
bpBAyQB
rPLuY
nnIXgHEi
SBBZVIpnnwLd
nepGcmrZzN
BHedEuhAU
HmnOTUZNid
aSigpZKbLew
GISxJ
KerBBUiJ
vIoCFyCD
搜索
查看: 30637|回复: 13

发一个动态的app,谁用谁知道 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
1540587
帖子
172
PB币
1153
贡献
0
技术
0
活跃
183
楼主
发表于 2015-7-14 17:51:09 IP属地四川 |只看该作者 |倒序浏览
快御云安全
三个部分  1. Config.INI       2. AppPanel.INI     3. Transition.lua

Config.INI     (更换个性的 *.png 及其链接启动)

  [Variables]
   AppIcon1=outlook.png
   AppPath1=OUTLOOK.exe
   AppIcon2=excel.png
   AppPath2=EXCEL.exe
   AppIcon3=word.png
   AppPath3=WINWORD.exe
   AppIcon4=powerpoint.png
   AppPath4=POWERPNT.exe
   AppIcon5=onenote.png
   AppPath5=notepad.exe
   LinkPath1=http://www.163.com


AppPanel.INI  (不用更改)

[Rainmeter]
Update=25
MouseActionCursor=0

[Metadata]
Name=Application Panel
Author=Dyar Perdana
Information=Simple circle panel for app shortcuts
Version=1.0
License=Creative Commons Attribution-NonCommercial-ShareAlike 3.0

[Variables]
@include=Config.inc
_measureCalc=[!EnableMeasure MeasureCalc]
Show=[!SetVariable _measureCalc ""][!SetOption MeterPin Y 5][!SetOption MeterPin ImageRotate -90][!SetOption MeterPin LeftMouseUpAction #*Hide*#][!UpdateMeterGroup Trigger][!Redraw]
Hide=[!SetVariable _measureCalc "[!EnableMeasure MeasureCalc]"][!SetOption MeterPin Y 25][!SetOption MeterPin ImageRotate 90][!SetOption MeterPin LeftMouseUpAction #*Show*#][!UpdateMeterGroup Trigger][!Redraw]
Pin.Show=!CommandMeasure MeasureTransition "Fade('MeterPin', 50, 'Auto', 10)"
Pin.Hide=!CommandMeasure MeasureTransition "FadeOut('MeterPin', 'Auto', 10)"
Logo.Show=!CommandMeasure MeasureTransition "FadeIn('MeterLogo', 'Auto', 10)"
Logo.Hide=!CommandMeasure MeasureTransition "FadeOut('MeterLogo', 'Auto', 10)"


Meter3.Expand=!CommandMeasure MeasureTransition "MoveToX('Meter3', 45)"
Meter3.Collapse=!CommandMeasure MeasureTransition "MoveToX('Meter3', 50)"
Meter2.Expand=!CommandMeasure MeasureTransition "MoveToX('Meter2', 90)"
Meter2.Collapse=!CommandMeasure MeasureTransition "MoveToX('Meter2', 50)"
Meter4.Expand=!CommandMeasure MeasureTransition "MoveToX('Meter4', 135)"
Meter4.Collapse=!CommandMeasure MeasureTransition "MoveToX('Meter4',50)"
Meter5.Expand=!CommandMeasure MeasureTransition "MoveToX('Meter5', 180)"
Meter5.Collapse=!CommandMeasure MeasureTransition "MoveToX('Meter5', 50)"
; -------------------------------------------------------
;                      M E A S U R E S
; -------------------------------------------------------

[MeasureTransition]
  Measure=Script
  ScriptFile=Transition.lua
  Steps=11

[MeasureCalc]
  Measure=Calc
  Formula=MeasureCalc+(MeasureCalc<=46)
  IfEqualValue=46
  IfEqualAction=[!DisableMeasure MeasureCalc][#Logo.Show#][#Meter2.Collapse#][#Meter3.Collapse#][#Meter4.Collapse#][#Meter5.Collapse#][!SetOption Background SolidColor ""][!UpdateMeter Background][!RainmeterHideMeter Meter1][!RainmeterHideMeter Meter2][!RainmeterHideMeter Meter3][!RainmeterHideMeter Meter4][!RainmeterHideMeter Meter5][!Redraw]
  Disabled=1

[MeasureCalc2]
  Measure=Calc
  Formula=MeasureCalc2+(MeasureCalc2<=27)
  IfEqualValue=27
  IfEqualAction=[!DisableMeasure MeasureCalc2][#Pin.Show#]
  Disabled=1


; -------------------------------------------------------
;                       S T Y L E S
; -------------------------------------------------------
; 定义了图标大小
[StyleApp]
  X=0
  Y=5
  W=42
  H=42
  AntiAlias=1
  UpdateDivider=-1

; -------------------------------------------------------
;                       M E T E R S
; -------------------------------------------------------

[Background]
  Meter=Image
  Group=Trigger
  X=0
  Y=0
  W=240
  H=40
  MouseOverAction=[!RainmeterShowMeter Meter1][!RainmeterShowMeter Meter2][!RainmeterShowMeter Meter3][!RainmeterShowMeter Meter4][!RainmeterShowMeter Meter5][!DisableMeasure MeasureCalc][!EnableMeasure MeasureCalc2][#Logo.Hide#][#Meter2.Expand#][#Meter3.Expand#][#Meter4.Expand#][#Meter5.Expand#][!SetOption Background SolidColor 00000001][!UpdateMeter Background][!Redraw]
  MouseLeaveAction=#_measureCalc#[!DisableMeasure MeasureCalc2][#Pin.Hide#]
  DynamicVariables=1
  UpdateDivider=-1
  
[Meter1]
  Meter=Image
  MeterStyle=StyleApp
  ImageName=#AppIcon1#
  LeftMouseUpAction=["#AppPath1#"]
  Disabled=1
  Hidden=1
  
[Meter2]
  Meter=Image
  MeterStyle=StyleApp
  ImageName=#AppIcon2#
  LeftMouseUpAction=["#AppPath2#"]
  Hidden=1
  
[Meter3]
  Meter=Image
  MeterStyle=StyleApp
  ImageName=#AppIcon3#
  LeftMouseUpAction=["#AppPath3#"]  
  Hidden=1
  
[Meter4]
  Meter=Image
  MeterStyle=StyleApp
  ImageName=#AppIcon4#
  LeftMouseUpAction=["#AppPath4#"]  
  Hidden=1
  
[Meter5]
  Meter=Image
  MeterStyle=StyleApp
  ImageName=#AppIcon5#
  LeftMouseUpAction=["#AppPath5#"]  
  Hidden=1
  
[MeterLogo]
  Meter=Image
  MeterStyle=StyleBG
  X=0
  Y=0
  W=60
  h=1
  SolidColor=000000  

  ;Meter=Image
  ;MeterStyle=StyleApp
  ;ImageName=office2013.png
  ;ImageAlpha=255
  ;X=0
  ;Y=4
  ;W=48
  ;H=48
  ;Hidden=1

Transition.lua  (rainmeter中的脚本语言,还是比较容易理解)

function Initialize()
        Script = SELF:GetName()

        --SET DEFAULT STEPS.
        DefaultSteps = SELF:GetNumberOption('Steps', 25)
        --This is allowed as a global setting because the number of
        --steps required for a transition can vary widely depending
        --on the skin's Update rate.

        --CREATE GLOBAL QUEUE.
        Queue = {}

        --CREATE CURVES TABLE.
        Curves = {}

        --CREATE AUTO-OPTIONS TABLE.
        AutoOptions = {}

        --LOAD MODULES.
        ModuleProfiles()
        ModuleMoveX()
        ModuleMoveY()
        ModuleFade()
        --Modules create new curves, auto-options, shorthand functions and profile functions.
end

function Start(Curve, Meters, Target, Modifier, VariableName, Steps)
        for MeterName in string.gmatch(Meters, '[^%s%,]+') do

                --DEFINE MISSING AND/OR UNFORMATTED PARAMETERS
                local Target       = tonumber(Target)
                local Modifier     = Modifier         or 'To'
                local VariableName = VariableName     or 'Auto'
                local Steps        = tonumber(Steps)  or DefaultSteps

                --IF METER DOES NOT EXIST, TREAT AS A GROUP.
                local Group = SKIN:GetMeter(MeterName) and 0 or 1

                --DETERMINE AUTO-OPTION BEHAVIOR
                local Xi, UpdateFunction
                if VariableName == 'Auto' then
                        if Group == 0 then
                                local Meter = SKIN:GetMeter(MeterName)
                                Xi, UpdateFunction = AutoOptions[Curve](MeterName)
                        else
                                print('Error: a variable name must be given for transitions on meter groups.')
                                return
                        end
                else
                        Xi = tonumber(SKIN:GetVariable(VariableName, ''))
                        UpdateFunction = function(X)
                                SKIN:Bang('!SetVariable', VariableName, X)
                        end
                end

                --DETERMINE Xf (ENDPOINT) BASED ON MODIFIER.
                local Xf

                if Modifier == 'To' then
                        Xf = Target
                elseif Modifier == 'By' then
                        Xf = Xi + Target
                else
                        Modifier = tonumber(Modifier)
                        if math.abs(Modifier - Xi) < math.abs(Target - Xi) then
                                Xf = Target
                        else
                                Xf = Modifier
                        end
                end

                --REMOVE EXISTING JOB ON CURRENT METER & OPTION
                for i,v in ipairs(Queue) do
                        if (v['n'] == MeterName) and (v['v'] == VariableName) then
                                table.remove(Queue, i)
                        end
                end

                --ADD NEW JOB
                table.insert(Queue, {
                        n  = MeterName,
                        v  = VariableName,
                        g  = Group,
                        t  = 0,
                        Xi = Xi,
                        Xf = Xf,
                        s  = Steps,
                        c  = Curve,
                        f  = UpdateFunction
                } )

                --IF THE QUEUE WAS PREVIOUSLY EMPTY, ACTIVATE UPDATE().
                if #Queue == 1 then
                        SKIN:Bang('!SetOption', Script, 'UpdateDivider', 1)
                        SKIN:Bang('!UpdateMeasure', Script)
                end
        end
end

function Update()
        if #Queue > 0 then
                for i,v in ipairs(Queue) do
                        local MeterName      = v['n']
                        local VariableName   = v['v']
                        local Group          = v['g']
                        local t              = v['t']
                        local Xi             = v['Xi']
                        local Xf             = v['Xf']
                        local Steps          = v['s']
                        local Curve          = v['c']
                        local UpdateFunction = v['f']

                        if t == Steps then
                                X = Xf
                                table.remove(Queue, i)
                        else
                                X = Curves[Curve](t, Xi, Xf, Steps)
                                v['t'] = t + 1
                        end

                        UpdateFunction(X)
                        local BangType = (Group == 1) and 'Group' or ''
                        SKIN:Bang('!UpdateMeter'..BangType, MeterName)
                end
        end

        --IF THE QUEUE IS NOW EMPTY, DEACTIVATE UPDATE().
        if #Queue == 0 then
                SKIN:Bang('!SetOption', Script, 'UpdateDivider', -1)
        end

        return #Queue
end

-----------------------------------------------------------------------
-- PROFILE MODULE

function ModuleProfiles()
        Profiles = {}
        ProfileFunctions = {}

        --ADD PROFILES FROM SCRIPT OPTIONS
        local CountProfiles = 0
        repeat
                CountProfiles = CountProfiles + 1
                if SELF:GetOption('Profile'..CountProfiles, '') ~= '' then
                        local Parameters = {}
                        for p in string.gmatch(SELF:GetOption('Profile'..CountProfiles), '[^%;]+') do
                                table.insert(Parameters, p)
                        end

                        --REMOVE FIRST PARAMETER, USE AS THE NAME OF THE PROFILE.
                        local ProfileName = table.remove(Parameters, 1)
                        Profiles[ProfileName] = Parameters
                else
                        CountProfiles = -1
                end
        until CountProfiles == -1

        Profile = function(ProfileName)
                local ShorthandName = Profiles[ProfileName][1]
                local ShorthandFunction = ProfileFunctions[ShorthandName]
                ShorthandFunction(unpack(Profiles[ProfileName], 2))
        end
end

-----------------------------------------------------------------------
-- TRANSITION MODULES

function ModuleMoveX()
        Curves['MoveX'] = function(t, Xi, Xf, Steps)
                return Xi + ((Xf - Xi) / 2) + ((Xf - Xi) / 2) * math.sin(math.pi * ((t / Steps) - 1/2))
        end
       
        AutoOptions['MoveX'] = function(MeterName)
                local Meter = SKIN:GetMeter(MeterName)
                local Xi = Meter:GetX()
                local UpdateFunction = function(X)
                        SKIN:Bang('!SetOption', MeterName, 'X', X)
                end
                return Xi, UpdateFunction
        end

        MoveToX = function(Meters, Target, VariableName, Steps)
                Start('MoveX', Meters, Target, 'To', VariableName, Steps)
        end

        MoveByX = function(Meters, Target, VariableName, Steps)
                Start('MoveX', Meters, Target, 'By', VariableName, Steps)
        end

        MoveToggleX = function(Meters, Modifier, Target, VariableName, Steps)
                Start('MoveX', Meters, Target, Modifier, VariableName, Steps)
        end

        if ProfileFunctions then
                ProfileFunctions['MoveToX']     = MoveToX
                ProfileFunctions['MoveByX']     = MoveByX
                ProfileFunctions['MoveToggleX'] = MoveToggleX
        end
end

function ModuleMoveY()
        Curves['MoveY'] = function(t, Xi, Xf, Steps)
                return Xi + ((Xf - Xi) / 2) + ((Xf - Xi) / 2) * math.sin(math.pi * ((t / Steps) - 1/2))
        end

        AutoOptions['MoveY'] = function(MeterName)
                local Meter = SKIN:GetMeter(MeterName)
                local Yi = Meter:GetY()
                local UpdateFunction = function(Y)
                        SKIN:Bang('!SetOption', MeterName, 'Y', Y)
                end
                return Yi, UpdateFunction
        end

        MoveToY = function(Meters, Target, VariableName, Steps)
                Start('MoveY', Meters, Target, 'To', VariableName, Steps)
        end

        MoveByY = function(Meters, Target, VariableName, Steps)
                Start('MoveY', Meters, Target, 'By', VariableName, Steps)
        end

        MoveToggleY = function(Meters, Modifier, Target, VariableName, Steps)
                Start('MoveY', Meters, Target, Modifier, VariableName, Steps)
        end

        if ProfileFunctions then
                ProfileFunctions['MoveToY']     = MoveToY
                ProfileFunctions['MoveByY']     = MoveByY
                ProfileFunctions['MoveToggleY'] = MoveToggleY
        end
end

function ModuleFade()
        Curves['Fade'] = function(t, Xi, Xf, Steps)
                return Xi + t * (Xf - Xi) / Steps
        end

        AutoOptions['Fade'] = function(MeterName)
                local Meter = SKIN:GetMeter(MeterName)
                local Ai, UpdateFunction
                if Meter:GetOption('ImageAlpha', '') ~= '' then
                        Ai = tonumber(Meter:GetOption('ImageAlpha'))
                        UpdateFunction = function(A)
                                SKIN:Bang('!SetOption', MeterName, 'ImageAlpha', A)
                        end
                else
                        for _,Option in ipairs( { 'ImageTint', 'FontColor', 'PrimaryColor', 'BarColor', 'LineColor', 'SolidColor' } ) do
                                if Meter:GetOption(Option, '') ~= '' then
                                        local Colors = ParseColorCode(Meter:GetOption(Option))
                                        Ai = Colors[4]
                                        UpdateFunction = function(A)
                                                SKIN:Bang('!SetOption', MeterName, Option, Colors[1]..','..Colors[2]..','..Colors[3]..','..A)
                                        end
                                        break
                                end
                        end
                end
                return Ai, UpdateFunction
        end

        Fade = function(Meters, Target, VariableName, Steps)
                Start('Fade', Meters, Target, 'To', VariableName, Steps)
        end

        FadeIn = function(Meters, VariableName, Steps)
                Start('Fade', Meters, 255, 'To', VariableName, Steps)
        end

        FadeOut = function(Meters, VariableName, Steps)
                Start('Fade', Meters, 0, 'To', VariableName, Steps)
        end

        FadeToggle = function(Meters, Modifier, Target, VariableName, Steps)
                Modifier = Modifier and Modifier or 0
                Target = Target and Target or 255
                Start('Fade', Meters, Target, Modifier, VariableName, Steps)
        end

        if ProfileFunctions then
                ProfileFunctions['Fade']       = Fade
                ProfileFunctions['FadeIn']     = FadeIn
                ProfileFunctions['FadeOut']    = FadeOut
                ProfileFunctions['FadeToggle'] = FadeToggle
        end
end

-----------------------------------------------------------------------
-- HELPER FUNCTIONS

function ParseColorCode(String)
        local Colors = {}

        for a in string.gmatch(String, '[%a%d]+') do
                table.insert(Colors, a)
        end

        if #Colors == 1 then
                local Hex = table.remove(Colors, 1)
                for a in string.gmatch(Hex, '[%a%d][%a%d]') do
                        a = tonumber(a, 16)
                        table.insert(Colors, a)
                end
        else
                for i,v in ipairs(Colors) do
                        v = tonumber(v)
                end
        end

        if #Colors == 3 then
                table.insert(Colors, 255)
        end

        return Colors
end

--by Kaelri

Rank: 2Rank: 2

UID
1540587
帖子
172
PB币
1153
贡献
0
技术
0
活跃
183
沙发
发表于 2015-7-15 10:04:51 IP属地四川 |只看该作者
这个皮肤利用 Transition.lua 脚本产生的动画显示APP图标,类似于objectdock plus或dock、仿mac dock 的动画效果。修改 Transition.lua  可以改变图标延伸的方向,默认是向右,也可向其他方向。当鼠标略过,显示一排APP应用图标。 (rainmeter 特点: 占用RAM随皮肤大小变化、几乎不占用CPU,国产的雨滴则相反,超高的CPU占用和超低的RAM占用。)

Rank: 2Rank: 2

UID
1540587
帖子
172
PB币
1153
贡献
0
技术
0
活跃
183
板凳
发表于 2015-7-15 10:08:08 IP属地四川 |只看该作者

Rank: 2Rank: 2

UID
4198017
帖子
99
PB币
151
贡献
0
技术
2
活跃
357
4F
发表于 2015-10-18 17:55:25 IP属地贵州 |只看该作者
怎么用?没懂

Rank: 5Rank: 5Rank: 5

UID
982758
帖子
432
PB币
17
贡献
0
技术
0
活跃
488
5F
发表于 2015-12-8 11:06:51 IP属地山东 |只看该作者
pcbeta_murphy 发表于 2015-7-15 10:04
这个皮肤利用 Transition.lua 脚本产生的动画显示APP图标,类似于objectdock plus或dock、仿mac dock 的动画 ...

感谢,感谢。

Rank: 2Rank: 2

UID
4237456
帖子
153
PB币
302
贡献
0
技术
4
活跃
468
6F
发表于 2015-12-15 13:31:36 IP属地广东 |只看该作者
感谢楼主分享谢谢

Rank: 1

UID
3647884
帖子
36
PB币
5
贡献
0
技术
0
活跃
42
7F
发表于 2016-1-22 15:04:34 IP属地广东 |只看该作者
怎么用???????

Rank: 1

UID
2486807
帖子
31
PB币
10
贡献
0
技术
0
活跃
32
8F
发表于 2016-2-11 22:16:46 IP属地天津 |只看该作者
不明觉厉啊

Rank: 1

UID
1541602
帖子
102
PB币
0
贡献
0
技术
0
活跃
51
9F
发表于 2016-2-28 16:05:31 IP属地广东 |只看该作者
热热热热热热热热热热热热

Rank: 1

UID
3009233
帖子
65
PB币
26
贡献
0
技术
0
活跃
82
10F
发表于 2016-3-3 10:26:36 IP属地江苏 |只看该作者
不错不错,支持支持

Rank: 2Rank: 2

UID
3154883
帖子
147
PB币
276
贡献
0
技术
0
活跃
84
11F
发表于 2016-3-7 17:54:30 IP属地河南 |只看该作者
只有大神们懂啦。。。。。

Rank: 1

UID
4731390
帖子
13
PB币
57
贡献
0
技术
0
活跃
14
12F
发表于 2016-3-26 10:33:20 IP属地广东 |只看该作者
感谢楼主分享谢谢

Rank: 2Rank: 2

UID
4699277
帖子
183
PB币
213
贡献
0
技术
0
活跃
401
13F
发表于 2016-5-2 22:08:07 IP属地江苏 |只看该作者

感谢楼主分享谢谢

Rank: 2Rank: 2

UID
259287
帖子
100
PB币
1698
贡献
0
技术
0
活跃
124
14F
发表于 2016-6-25 15:21:14 IP属地辽宁 |只看该作者
不明觉厉 aaaaaaaaaaaa
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛