رفتن به مطلب
  • 0

رفع مشکل حلقه فور برای انیمیشن


mohammade79

سوال

سلام دوستان من یه برنامه دارم که 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 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

دوستان اینم ذکر کنم که فقط باید قسمت resetcolors تغییر کنه و نمیدونم چرا هر کاری میکنم رو یکیش ک میزنی همش با هم انجام میشه انیمیشن روش

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دلیلش اینه ک شما حلقه و داخلش شرط هایی که نوشتی به شکلیه که تمام کدهای داخلش اجرا میشه و طبیعتا نباید درست باشه. فک کنم تغییر شرط ها مشکل رو حل بکنه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...