Kieli VB
Ja muuten tuli vielä yksi kysymys mieleen jonka koodia olen yrittänyt etsiä.Se on sellainen että jos painaa jotain kohtaa formilla niin olisiko mahdollista että ukko1 liikkuu painettuun kohtaan eikä ilmesty sinne. Ei siis tätä koodia: ukko1.move x,y.
Please Tell me
lainaus:
...ukko1 liikkuu painettuun kohtaan eikä ilmesty sinne...
Kerro vähän selkeämmin. Siis jos hiirellä painetaan jotain kohtaa formissa, vai? Ei herranjestas...
Kyllä,se liikkuu sinne eikä ilmesty
Varmaankin sen ukon pitäs liukua sinne?
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ukko1.Move X, Y
ukko1.Visible = False
End SubHän ilmeisesti haluaisi, että algoritmissa käytetään left ja top arvoja moven sijasta. Siis Ukko1.left=ukko1.left+1 tyyliin..
'Olettaen että X ja Y
Private Sub Timer1_Timer()
If Image1.Left < 3000 Then
Image1.Left = Image1.Left + 100
ElseIf Image1.Left > 3000 Then
Image1.Left = Image1.Left - 100
Else
End If
If Image1.Top < 3000 Then
Image1.Top = Image1.Top + 100
ElseIf Image1.Top > 3000 Then
Image1.Top = Image1.Top - 100
Else
End If
End SubHän ilmeisesti haluaisi, että algoritmissa käytetään left ja top arvoja moven sijasta. Siis Ukko1.left=ukko1.left+1 tyyliin..
'X=3000 Y=3000 tässä esimerkissä..
Private Sub Timer1_Timer()
If Image1.Left < 3000 Then
Image1.Left = Image1.Left + 100
ElseIf Image1.Left > 3000 Then
Image1.Left = Image1.Left - 100
Else
End If
If Image1.Top < 3000 Then
Image1.Top = Image1.Top + 100
ElseIf Image1.Top > 3000 Then
Image1.Top = Image1.Top - 100
Else
End If
End Suben mee takuuseen toimivuudesta, pitäisi toimia.
Iskin sitten vahingossa tabulaattoria ja entteriä.. niin näköjään kerkes lähettää vaikka iskin stoppia.. no ei maha mitään enää..
Joo tajusin jus että toihan bugaa jos se kuvan lähtöpaikka ei ole sadalla jaollinen..
Masa: Laitan sulle huomenaamulla mallin miten se pitää tehdä... tein jo osaksi mutta en ehdi tänään tehdä loppuun.
No niin
Lomakkelle kaksi objektia: Ukko1 ja Ukko2 (pictureboxia)
Molempien enabled-arvon tulee olla false tai lomakkeen mousedown-eventti ei käynnisty
oKohde on liikutettavan objektin muuttuja, jota muutetaan asettamalla sen arvoksi liikutettavan objektin nimi Set komennolla. (esim. Set oKohde = Me.Ukko2)
Lomakkeelle seuraava koodi ja sen pitäisi toimia:
Dim oKohde As Object
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 65 Then ' Vaihtaa A-kirjaimella
Select Case oKohde.Name ' Valitsee liikutettavan kohteen objektin nimen perusteella
Case "Ukko1"
Set oKohde = Me.Ukko2
Case "Ukko2"
Set oKohde = Me.Ukko1
End Select
End If
End Sub
Private Sub Form_Load()
Set oKohde = Ukko1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim imValX As Integer ' integer move value X = imValX
Dim imValY As Integer ' integer move value Y = imValY
Dim isValX As Integer ' integer source value X = isValX
Dim isValY As Integer ' integer source value Y = isValY
' Tasaa kohde kymmenellä jaolliseksi
isValX = Int(X / 10) * 10
isValY = Int(Y / 10) * 10
' Tutki suunta mihin kohdetta liikutetaan
If Y >= oKohde.Top And isValX >= oKohde.Left Then
imValX = 10
imValY = 10
ElseIf isValY <= oKohde.Top And isValX >= oKohde.Left Then
imValX = 10
imValY = -10
ElseIf isValY >= oKohde.Top And isValX <= oKohde.Left Then
imValX = -10
imValY = 10
ElseIf isValY <= oKohde.Top And isValX <= oKohde.Left Then
imValX = -10
imValY = -10
End If
Do While oKohde.Top <> isValY Or oKohde.Left <> isValX
If oKohde.Top <> isValY Then oKohde.Top = oKohde.Top + imValY
If oKohde.Left <> isValX Then oKohde.Left = oKohde.Left + imValX
DoEvents
Loop
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.