c6a9cd69c2
* NEW: Add examples again. I hope correctly this time. git-svn-id: svn://localhost/gambas/trunk@6726 867c0c6c-44f3-4631-809d-bfa615b0a4ec
101 lines
1.8 KiB
Text
101 lines
1.8 KiB
Text
' Gambas class file
|
|
|
|
Static Private All As New CAnimation[]
|
|
|
|
Event Stop
|
|
|
|
Property Read Object As Object
|
|
|
|
Private $hObject As Object
|
|
Private $sProperty As String
|
|
Private $fTarget As Float
|
|
Private $fTime As Float
|
|
Private $hTimer As Timer
|
|
|
|
Static Public Sub Start(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer, Optional hParent As Object)
|
|
|
|
Dim hAnim As CAnimation
|
|
Dim aStop As New CAnimation[]
|
|
|
|
For Each hAnim In All
|
|
If hAnim.Object = hObject Then aStop.Add(hAnim)
|
|
Next
|
|
|
|
For Each hAnim In aStop
|
|
hAnim.Stop
|
|
Next
|
|
|
|
hAnim = New CAnimation(hObject, sProperty, fTarget, iTime)
|
|
All.Add(hAnim)
|
|
|
|
If hParent Then Object.Attach(hAnim, hParent, "Animation")
|
|
|
|
End
|
|
|
|
Static Public Sub Exit()
|
|
|
|
While All.Count
|
|
All[0].Stop
|
|
Wend
|
|
|
|
End
|
|
|
|
|
|
|
|
Public Sub _new(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer)
|
|
|
|
'Debug hObject.Tag;; sProperty;; fTarget
|
|
|
|
$hObject = hObject
|
|
$sProperty = sProperty
|
|
$fTarget = fTarget
|
|
$fTime = Timer + iTime / 1000
|
|
|
|
$hTimer = New Timer As "Timer"
|
|
$hTimer.Delay = 50
|
|
$hTimer.Start
|
|
|
|
End
|
|
|
|
Public Sub Timer_Timer()
|
|
|
|
Dim fValue As Float
|
|
Dim iSign As Integer
|
|
Dim fDiff As Float
|
|
|
|
fValue = Object.GetProperty($hObject, $sProperty)
|
|
|
|
iSign = Sgn($fTarget - fValue)
|
|
fDiff = $fTime - Timer
|
|
fValue += ($fTarget - fValue) / (1000 * fDiff / $hTimer.Delay)
|
|
|
|
If fDiff <= 0 Or If iSign = 0 Or If iSign > 0 And fValue >= $fTarget Or If iSign < 0 And fValue <= $fTarget Then
|
|
Object.SetProperty($hObject, $sProperty, $fTarget)
|
|
{Stop}
|
|
Else
|
|
Object.SetProperty($hObject, $sProperty, fValue)
|
|
Endif
|
|
|
|
Catch
|
|
|
|
{Stop}
|
|
|
|
End
|
|
|
|
Public Sub Stop()
|
|
|
|
$hTimer.Stop
|
|
$hTimer = Null
|
|
$hObject = Null
|
|
|
|
All.Remove(All.Find(Me))
|
|
|
|
Raise Stop
|
|
|
|
End
|
|
|
|
Private Function Object_Read() As Object
|
|
|
|
Return $hObject
|
|
|
|
End
|