

1. Blend (2.0)'de yeni bir silverlight 2.0 proejsi oluşturun.
2. Layout üzerine bir top (elipse) ekleyin. Sonra bu elipse'i bir canvas içine alın.
3. İlk hızı girebilmek için bir textbox ve buton, hareket sırasında ekrana bilgi verebilmek için gerekli textblock'ları ekleyin. Ben textbox'lara "txt", textblock'lara da "tbl" ön ekini veriyorum. Şart değil, ama iyi olur.
4. Kod yazacağız, btnZiplat butonunun click eventini açın (VS2008'de). Aşağıdaki kodları
Partial Public Class Page
Inherits UserControl
Private Timer As Windows.Threading.DispatcherTimer
Private AnlikHiz, Yukseklik As Double
Private G_Sabiti As Double = 9.8
Private VY0 As Double
Private TimeElapsed As TimeSpan
Public Sub New()
' Required to initialize variables
InitializeComponent()
AnlikHiz = 0.0
Yukseklik = 0.0
VY0 = 0.0
Yukseklik = Me.Top.GetValue(Canvas.TopProperty)
Timer = New Windows.Threading.DispatcherTimer
Timer.Interval = New TimeSpan(0, 0, 0, 0, 20) ' 20 mili saniye
AddHandler Tier.Tick, AddressOf TimerTick
End Sub
Private Sub btnZiplat_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Me.Top.SetValue(Canvas.TopProperty, 328.0)
Timer.Stop()
TimeElapsed = New TimeSpan(0, 0, 0, 0)
VY0 = CDbl(Me.txtilkhiz.Text)
AnlikHiz = 0.0
Timer.Start()
End Sub
Sub TimerTick(ByVal sender As Object, ByVal e As EventArgs)
Dim NewTopValue, DisplacementValue, Vy As Double
TimeElapsed += Timer.Interval
DisplacementValue = VY0 * TimeElapsed.TotalMilliseconds / 1000
DisplacementValue -= 1 / 2 * G_Sabiti * (TimeElapsed.TotalMilliseconds / 1000 * TimeElapsed.TotalMilliseconds / 1000)
DisplacementValue *= 1.0
Vy = VY0 - G_Sabiti * TimeElapsed.TotalSeconds
NewTopValue = Yukseklik - DisplacementValue * 10
Me.tblHareketBilgileri.Text = "Ykseklik (m)=" & String.Format("{0:00.00}", DisplacementValue) & _
Environment.NewLine & "Dey Hz (m/s)=" & String.Format("{0:00.00}", Vy)
If NewTopValue > Yukseklik Then
Me.Top.SetValue(Canvas.TopProperty, Yukseklik)
VY0 *= 0.6
If VY0 <>
Timer.Stop()
Else
TimeElapsed = New TimeSpan(0, 0, 0, 0)
End If
Else
Me.Top.SetValue(Canvas.TopProperty, NewTopValue)
End If
End Sub
Tamamdır.
5. Çalıştırın. ilk hızı verdikten sonra belli bir yüksekliğe çıkacak, sonra geri düşecek ve yerdn tekrar zıplayacak. Her zıplamada biraz hız kaybedecek ve belirli bir limit hıza düşünce, sıplama duracaktır. Yükseklik ve düşey hız fizik formulüne göre hesaplanmıştır, doğrudur.
Hiç yorum yok:
Yorum Gönder