سلام دوستان من یه برنامه دارم که 6 تا تصویر داره ولی وقتی کد انیمیشن رو میزنم برای هر کدوم که روش کیلیک شد اجرا کنه همش با هم اجرا میشه مشکل کجاست؟(resetcolors)
Sub Process_Globals
Dim piano_mp(6) As MediaPlayer
End Sub
Sub Globals
Type Point(Id As Int, prevX As Int, prevY As Int)
Private list_TOUCHING, list_TOUCHED As List
Dim G As Gestures
Dim TouchMap As Map
Dim pnl_keys(6) As Panel
Private key1,key2,key3,key4,key5,key6 As Panel
Dim ic As ICOSScaleAnimation
Private Button1,Button2,Button3,Button4,Button5,Button6,Button7,Button8,Button9,Button10 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("1")
list_TOUCHING.Initialize
list_TOUCHED.Initialize
G.SetOnTouchListener(Activity, "GesturesTouch")
TouchMap.Initialize
loadsound 'load sound
setallpanels 'set panels
End Sub
Sub loadsound
For i = 0 To piano_mp.Length -1
piano_mp(i).Initialize
piano_mp(i).Load(File.DirAssets,"newsound/" & i & ".mp3")
piano_mp(i).Looping = False
Next
End Sub
Sub setallpanels
pnl_keys(0) = key1
pnl_keys(1) = key2
pnl_keys(2) = key3
pnl_keys(3) = key4
pnl_keys(4) = key5
pnl_keys(5) = key6
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
setallkeystofalse
End Sub
Sub setallkeystofalse
list_TOUCHING.Clear
list_TOUCHING.Clear
TouchMap.Clear
resetcolors
End Sub
Sub resetcolors
For i = 0 To pnl_keys.Length -1
If i >= 0 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key1)
End If
If i >= 1 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key2)
End If
If i >= 2 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key3)
End If
If i >= 3 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key4)
End If
If i >= 4 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key5)
End If
If i >= 5 Then
ic.ScaleFromCenterToTopBottomBack("ic",140)
ic.StartAnim(key6)
End If
Next
End Sub
Sub GesturesTouch(View As Object, PointerID As Int, Action As Int, X As Float, Y As Float) As Boolean
Dim p As Point
Select Action
Case G.ACTION_DOWN, G.ACTION_POINTER_DOWN
p.Id = PointerID
TouchMap.Put(PointerID, p)
Case G.ACTION_POINTER_UP
TouchMap.Remove(PointerID)
Case G.ACTION_UP
setallkeystofalse
End Select
list_TOUCHING.Clear 'reset touching list
For i = 0 To TouchMap.Size - 1
Dim px, py As Int
p = TouchMap.GetValueAt(i)
px = G.GetX(p.id)
py = G.GetY(p.id)
For Each pnl As Panel In pnl_keys
If px > pnl.Left And px < pnl.Left + pnl.Width Then
If py > pnl.Top And py < pnl.Top + pnl.Height Then
If pnl.Tag > 4 Then
If list_TOUCHED.IndexOf("0") > -1 Or list_TOUCHED.IndexOf("1") > -1 Or list_TOUCHED.IndexOf("2") > -1 Or list_TOUCHED.IndexOf("3") > -1 Or list_TOUCHED.IndexOf("4") > -1 Then
If py < pnl_keys(0).Height Then
If pnl.Tag = "5" Or pnl.Tag = "6" Then 'right side
If px > (pnl.Left + pnl.Width) - (pnl_keys(0).Width / 2) Then Continue
else if pnl.Tag = "6" Or pnl.Tag = "11" Then 'left side
If px < pnl.Left + (pnl_keys(0).Width / 2) Then Continue
else if pnl.tag = "6" Then
'do nithing - full white key
Else
If px > (pnl.Left + pnl.Width) - (pnl_keys(0).Width / 2) Or px < pnl.Left + (pnl_keys(0).Width / 2) Then Continue
End If
End If
End If
End If
list_TOUCHING.Add(pnl.Tag)
If list_TOUCHED.IndexOf(pnl.Tag) = -1 Then
list_TOUCHED.Add(pnl.Tag)
piano_mp(pnl.Tag).Position = 0
piano_mp(pnl.Tag).Play
End If
End If
End If
Next
Next
resetcolors
For i = 0 To list_TOUCHING.Size - 1
Dim index As String = list_TOUCHING.Get(i)
If index < 5 Then
' pnl_keys(index).Color = Colors.Blue
Else
' pnl_keys(index).Color = Colors.ARGB(100,0,0,0)
End If
Next
For i = (list_TOUCHED.Size-1) To 0 Step -1
If list_TOUCHING.IndexOf(list_TOUCHED.Get(i)) = -1 Then list_TOUCHED.RemoveAt(i)
Next
Return True
End Sub
سوال
mohammade79 127
سلام دوستان من یه برنامه دارم که 6 تا تصویر داره ولی وقتی کد انیمیشن رو میزنم برای هر کدوم که روش کیلیک شد اجرا کنه همش با هم اجرا میشه مشکل کجاست؟(resetcolors)
لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.