
Hope that helps
Thanks
Steven
As a starting point you can use the following demonstrating skin where blue circles rotate on a circle when hovering over the red base rectangle (and back when leaving the red base rectangle):Honimoura wrote: ↑June 25th, 2019, 6:19 pm Hello, I just discovered this option. I use it a little differently. I use it to click on one of the skin, it "unwinds" icons to create a menu. However I am looking for how to make a slide of the skins on a arc path.
In order to be as clear as possible. The base skin is a circle, so I want to scroll the "icons" around this circle in sliding.
(Sorry, i'm french, google trad power)
Code: Select all
[Rainmeter]
Update=1000
AccurateText=1
OnWakeAction=[!Refresh]
DynamicWindowSize=1
; BackgroundMode=2
; SolidColor=4080C040
[Variables]
CIRCLE.X=130
CIRCLE.Y=130
CIRCLE.R=100
; starting angles in degrees, starting on the right (=east)
; angle for the red base
ANGLE.Base=180
; angles for the blue circles which will rotate upon mouse move over (and out) of the red base
ANGLE.Icon.1=220
ANGLE.Icon.2=265
ANGLE.Icon.3=337
Base.W=40
Base.H=#Base.W#
Icon.R=20
; for ActionTimer
AT_Angle=0
UAT_Angle=[!UpdateMeasure "Measure_AT_Angle"][!UpdateMeterGroup "G_ICON"][!Redraw]
; --------------------------------------------------------------------------------
; Measures
; --------------------------------------------------------------------------------
[Measure_AT_Angle]
Measure=PLUGIN
Plugin=ActionTimer
ActionList1=Repeat ROTATE_RIGHT, 7, 80 | Wait 7 | ROTATE_RIGHT_FINAL
ActionList2=Repeat ROTATE_LEFT, 7, 80 | Wait 7 | ROTATE_LEFT_FINAL
ROTATE_RIGHT= [!SetVariable "AT_Angle" "(MIN(80, #AT_Angle# + 1))"]#UAT_Angle#
ROTATE_RIGHT_FINAL=[!SetVariable "AT_Angle" "80"]#UAT_Angle#
ROTATE_LEFT= [!SetVariable "AT_Angle" "(MAX(0, #AT_Angle# - 1))"]#UAT_Angle#
ROTATE_LEFT_FINAL= [!SetVariable "AT_Angle" "0"]#UAT_Angle#
DynamicVariables=1
UpdateDivider=-1
IgnoreWarnings=1
; --------------------------------------------------------------------------------
; Meters
; --------------------------------------------------------------------------------
[Meter_Circle]
Meter=SHAPE
Shape= Ellipse #CIRCLE.X#, #CIRCLE.Y#, #CIRCLE.R#, #CIRCLE.R# | Extend Format_Circle
Format_Circle=StrokeWidth 2 | Stroke Color 800000FF | Fill Color FFFFFFFF
AntiAlias=1
DynamicVariables=1
[Meter_Base]
Meter=SHAPE
Shape=Rectangle (#CIRCLE.X# + (#CIRCLE.R# + 0.5 * #Base.W#) * COS(RAD(#ANGLE.Base#))), (#CIRCLE.Y# + (#CIRCLE.R# + 0.5 * #Base.W#) * SIN(RAD(#ANGLE.Base#))), #Base.W#, #Base.W# | Extend Format_Base
Format_Base=StrokeWidth 2 | Stroke Color 800000FF | Fill Color FF0000FF
MouseOverAction= [!CommandMeasure "Measure_AT_Angle" "Stop 1"][!CommandMeasure "Measure_AT_Angle" "Stop 2"][!CommandMeasure "Measure_AT_Angle" "Execute 1"]
MouseLeaveAction=[!CommandMeasure "Measure_AT_Angle" "Stop 1"][!CommandMeasure "Measure_AT_Angle" "Stop 2"][!CommandMeasure "Measure_AT_Angle" "Execute 2"]
AntiAlias=1
DynamicVariables=1
[Meter_Icon_1]
Meter=SHAPE
Shape= Ellipse (#CIRCLE.X# + #CIRCLE.R# * COS(RAD(#ANGLE.Icon.1# + #AT_Angle#))), (#CIRCLE.Y# + #CIRCLE.R# * SIN(RAD(#ANGLE.Icon.1# + #AT_Angle#))), #Icon.R#, #Icon.R# | Extend Format_Icon
Format_Icon=StrokeWidth 2 | Stroke Color 004080FF | Fill Color 80BFFFFF
AntiAlias=1
DynamicVariables=1
Group=G_ICON
[Meter_Icon_2]
Meter=SHAPE
Shape= Ellipse (#CIRCLE.X# + #CIRCLE.R# * COS(RAD(#ANGLE.Icon.2# + #AT_Angle#))), (#CIRCLE.Y# + #CIRCLE.R# * SIN(RAD(#ANGLE.Icon.2# + #AT_Angle#))), #Icon.R#, #Icon.R# | Extend Format_Icon
Format_Icon=StrokeWidth 2 | Stroke Color 004080FF | Fill Color 80BFFFFF
AntiAlias=1
DynamicVariables=1
Group=G_ICON
[Meter_Icon_3]
Meter=SHAPE
Shape= Ellipse (#CIRCLE.X# + #CIRCLE.R# * COS(RAD(#ANGLE.Icon.3# + #AT_Angle#))), (#CIRCLE.Y# + #CIRCLE.R# * SIN(RAD(#ANGLE.Icon.3# + #AT_Angle#))), #Icon.R#, #Icon.R# | Extend Format_Icon
Format_Icon=StrokeWidth 2 | Stroke Color 004080FF | Fill Color 80BFFFFF
AntiAlias=1
DynamicVariables=1
Group=G_ICON
You are right. At first sight. But at the second view it isn't. Just imagine:
Code: Select all
[x-coordinate of the center of the circle] + [radius of the circle] * cosinus(angle)
Code: Select all
[y-coordinate of the center of the circle] + [radius of the circle] * sinus(angle)
Code: Select all
[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
SkinWidth=220
SkinHeight=185
[Metadata]
Name=SlideDemo\SimpleToRight
Author=JSMorley
Version=May 11, 2016
License=Creative Commons Attribution-Non-Commercial-Share Alike 3.0
Information=Demonstration of using ActionTimer to slide out a panel
[Variables]
OffSet=-190
State=1
U=[!UpdateMeasure MeasureSlider][!UpdateMeter *][!Redraw]
; Slider Measure
[MeasureSlider]
Measure=Plugin
Plugin=ActionTimer
ActionList1=Repeat SlideRight, 2, 22
SlideRight=[!SetVariable State "2"][!SetVariable OffSet "(Clamp(#OffSet#+9,-190,0))"]#U#
ActionList2=Repeat SlideLeft, 2, 22
SlideLeft=[!SetVariable State "1"][!SetVariable OffSet "(Clamp(#OffSet#-9,-190,0))"]#U#
DynamicVariables=1
; Meters
[MeterBack]
Meter=Image
X=#OffSet#
W=220
H=185
SolidColor=16,42,55,255
DynamicVariables=1
LeftMouseUpAction=[!CommandMeasure MeasureSlider "Execute #State#"]
Code: Select all
[MeasurePlayerState]
Measure=Plugin
Plugin=NowPlaying.dll
PlayerName=[MeasurePlayer]
PlayerType=State
IfCondition=MeasurePlayerState = 1
IfTrueAction=[!CommandMeasure MeasureSlider "Execute 1"]
IfFalseAction=[!DisableMeasureGroup "Vismeasure"][!HideMeterGroup "VisMeter"][!CommandMeasure MeasureSlider "Execute 2"]
DynamicVariables=1
I have one single suggestion for you: on both options IfTrueAction and IfFalseAction, beside the Execute statement, you should also add some bangs to stop the other command:
Code: Select all
[MeasurePlayerState]
...
IfCondition=MeasurePlayerState = 1
IfTrueAction=[!CommandMeasure MeasureSlider "Execute 1"][!CommandMeasure MeasureSlider "Stop 2"]
IfFalseAction=[!DisableMeasureGroup "Vismeasure"][!HideMeterGroup "VisMeter"][!CommandMeasure MeasureSlider "Stop 1"][!CommandMeasure MeasureSlider "Execute 2"]
...