Elikkä formia klikattessa pitäisi saada tapahtumaan jotain
jos kaksi komponenttia on "melkein" päällekkäin
Ei tohon tyyliin:
Private Sub Form_Click() if a.Height = b.Height and a.Width = b.Width then End Sub
Siis osittainen päällekkyys, vai?
Jep
Se on erittäin yksinkertaista... Pitemmittä puheitta, koodi on tässä. Koeta sisäistää se. Kysy jos et ymmärrä. En laita suoraan VB-koodia, koska muuten olisi liian helppoa :)
x1, y1, w1, h1 ovat objektin 1 sijainti ja koko. x2, y2, w2, h2 taas objektin 2. if x2 > x1 - w2 and x2 < x1 + w1 then //Horisontaalinen päällekkäisyys if y2 > y1 - h2 and y2 < y1 + h1 then //Mitä tapahtuu jos ovat päällekkkäin? end end
Voisitko tarkentaa?
eli en saanut tomimaan
No tässä on tuo muutettuna koodiksi(et kertonut mitä komponentit ovat joten tässä on käytetty kahta pictureboxia):
If Picture2.Left > Picture1.Left - Picture2.Width And Picture2.left < picture1.left + picture1.Width then If picture2.Top > Picture1.Top - Picture2.Height And picture2.Top < picture1.top + picture1.Width Then 'tapahtumat sijoitat tähän End If End If
Huomasin muuten juuri että olen käyttänyt samaa koodia joskus kun aloittelin koodamaan vb:llä.
Yritin tehdä silloin peliä ja käyttää tuota törmäys tarkastuksissa.
No, projekti kaatui siihen että tuota käyttämällä koodia löytyi yli 15000 riviä.
Nykyään saan saman aikaan muutamalla kymmenellä riviä koodia :)
Jarska90 kirjoitti:
Voisitko tarkentaa?
eli en saanut tomimaan
Ai mitä et saanu toimimaan? Tuon "koodin" ei ole tarkoitus toimia suoraan vaan se no esimerkki mitä pitäisi tehdä. Eli luo 8 numeromuuttujaa, ja laita niihin molempien objektien x ja y sekä leveys ja korkeus ( .Width ja .Height). Sitten rupeat If lauseella vertailemaan lukuja. Sulkuja pitää muistaakseni käyttää silloin kun käytetään and:ia (muistaakseni).
~Oho tuomas kerkesi eka =)~
Kiitos! Muuttujillahan tuo täytyy suorittaa. Koodista puuttui Do-silmukka joka aiheutti ongelmia eihän tää muuten vaikee oo
Aihe on jo aika vanha, joten et voi enää vastata siihen.