come fare a ricacciare l'oggetto nella stessa direzione da cui è venuto?
Un momento, però! Non devo mica riportarlo nel punto di entrata? è sufficiente che lo riporti, alla stessa altezza, sul margine.
Che succede quando io porto l'oggetto su un ostacolo e poi mi passa attraverso l'altro ostacolo messo a breve distanza?
Ora faccio in modo che la funzione esamini dapprima l'ostacolo 1 (marrone) e poi l'ostacolo 2 (rosso).
In questo caso, dopo aver portato l'oggetto (celeste) sull'ostacolo2, spostandolo verso l'ostacolo1, sia che il cursore del mouse rimanga sull'oggetto sia che venga spostato in sotto l'oggetto non attraversa l'ostacolo 1.
In questo caso, la funzione esamina dapprima l'ostacolo 1: quando porto l'oggetto sull'ostacolo 2 il codice non trova nulla da eccepire sull'ostacolo 1 e quindi esamina l'ostacolo 2 trovando che l'oggetto si è avvicinato dall'alto e quindi respingendolo in alto.
Quando poi avvicino l'oggetto all'ostacolo 1, il codice esamina di nuovo l'ostacolo 1 e trova l'eccezione, così respinge l'oggetto a sinistra. Quindi esamina l'ostacolo 2 e trovando l'eccezione respinge l'oggetto in alto.
Adesso inverto la sequenza degli ostacoli esaminati.
Quando avvicino l'oggetto sull'ostacolo 2 il codice esamina l'ostacolo 2 trovando l'eccezione e portandomi l'oggetto in alto. Quindi esamina l'ostacolo 1 e non trova nessuna eccezione.
Successivamente, all'avvicinamento all'ostacolo 1 il codice esamina l'ostacolo 2 e trova un'eccezione spingendomi in alto l'oggetto anche qualora l'oggetto avesse giè superato il limite dell'oggetto 1. Questo fa sì che l'oggetto rispunti fuori dall'oggetto 2 quando già ha superato il limite che non dovrebbe attraversare, creando il problema.
Se invece il cursore resta sull'oggetto, l'oggetto viene spinto fuori dall'oggetto 2, ma successivamente viene anche esaminato l'oggetto 1 perchè nel momento in cui l'oggetto viene respinto non si trova fuori dall'area dell'oggetto 1 e quindi può sollevare l'eccezione anche a carico dell'oggetto 1.
Nessun commento:
Posta un commento