Joo on ongelma. miten saan timer2 päälle kun picture liikkuu tiettyyn kohtaan...?
eli timer1 määrää että kuva liikkuu oikealle
Private Sub Timer1_Timer()
Picture1.Left = Picture1.Left + 100
End Sub
miten saan tehtyä sellasen että kun se on mennyt tietyn matkaa eteenpäin, niin se lähtee takaisin päin eli miten saan timer2 päälle???
En oikeen osaa selittää asiaa...Toivottavasti joku tajuu mitä tarkoitan.
Homma hoituu yhdelläkin Timerillä. Liikkumissuunta täytyy vain oikeassa kohdassa muuttaa päinvastaiseksi.
'tämä muuttuja on käytössä kaikissa aliohjelmissa Dim suunta As Integer Private Sub Form_Load() Timer1.Interval = 50 'liikkumisaikaväli ScaleMode = 3 'mittayksikkö pikseli Picture1.Left = 0 'kuvan aloituskohta suunta = 1 'kuvan aloitussuunta End Sub Private Sub Timer1_Timer() 'liikutetaan kuvaa sivusuunnassa oikeaan suuntaan 5 pikseliä Picture1.Left = Picture1.Left + suunta * 5 'kohdassa 100 käännetään suunta päinvastaiseksi If Picture1.Left >= 100 Then suunta = -1 'kun kuva on palannut aloituspaikkaan, lopetetaan liikkuminen If Picture1.Left <= 0 Then suunta = 0 End Sub
PS. Kannattaa käyttää mittayksikkönä pikseliä twipin sijaan.
Kiittos... noinhan se onnistuu.
entä jos haluun että kuva liikkuu neliön muotoisesti, tarviinko enempää timereitä?
ps.miten se twip vaihdetaan pixeliin?(vai tarviiko vaihtaa?)
Zero88 kirjoitti:
entä jos haluun että kuva liikkuu neliön muotoisesti, tarviinko enempää timereitä?
Kokeileppa miettiä ihan itse, Antin koodissa on hyvä lähtökohta.
Mutta tuossa alussa selittämälläsi koodilla, jos haluat välttämättä kahdella timerilla, tekisin näin:
Private Sub Timer1_Timer() Picture1.Left = Picture1.Left + 100 Timer2.Enabled = True Timer1.Enabled = False End Sub Private Sub Timer2_Timer() Picture1.Left = Picture1.Left - 100 Timer1.Enabled = True Timer2.Enabled = False End Sub
Zero88 kirjoitti:
ps.miten se twip vaihdetaan pixeliin?
Formin ScaleMode kolmoseksi.
Tämän saisi tehtyä kauniimminkin.
eli:
dim Phi as double Private Sub Timer1_Timer() Phi += 0.1 if Phi > 2*3.1419 then Phi = 0 picture1.left = picture1.left + Sin(Phi) * 200 ' Liikkuu 400 pikseliä oikealle, jonka jälkeen 400 pikseliä vasemmalle jne. End Sub
miiro oon kokeillu tolla koodilla, mutta ne kuvat vaan välkkyy eri paikoissa??mistäköhän on kysymys??
Zero88 kirjoitti:
mistäköhän on kysymys??
Siitä, että vuorotellen toinen Timer siirtää kuvaa eteenpäin ja toinen taaksepäin. Jos haluat välttämättä käyttää kahta Timeriä, niin laita toinen Timer toimintaan vasta silloin, kun liikkuva kuva on saavuttanut päätepisteensä.
Sitä mä oonkin kovasti yrittäny selvittää, että miten se tehdään, mutta ei oo onnistunut...
Oon yrittäny kaikenlaista koodia kuten esim.
If picture1.left=500 then timer2.enabled=true If picture1.left=500 then timer1.enabled=false
tai
If picture1.left=500 then timer2.enabled=true and timer1.enabled=false
Voisko joku kertoo että millä koodilla saan sen toimimaan, kun ei oikeen oma äly riitä...:(
Kokeileppa:
If picture1.left >= 500 Then timer2.enabled = True timer1.enabled = False End If
Luulis että oisit saanut jo toimimaan jo noilla mutta tässä tulee nyt vielä yksi..
Laita timereiden intervalit vaikka 100:taan
Private Sub Timer1_Timer()
If Picture1.Left <= 700 Then
'Liikutetaan kuvaa
Picture1.Left = Picture1.Left + 100
End IF
If Picture1.Left >= 701 Then
Timer2.Enabled = True
Timer1.Enabled = False
End IF
End Sub
Private Sub Timer2_Timer()
If Picture1.Left >= 700 Then
'Liikutetaan kuvaa
Picture1.Left = Picture1.Left - 100
End IF
If Picture1.Left <= 100 Then
Timer2.Enabled = False
Timer1.Enabled = True
End IF
End Sub
En oo testannu tota mutta luulisin että se toimii.
Jos ei toimi vaiha noita pienempi / suurempi juttuja toisin päin.
Kiitti meitzi nyt toimii hyvin :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.