سلام دوستان من یه برنامه دارم که 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)
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لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.