Il problema di fondo consiste nell'uso della funzione hitTest( ) all'interno di un Movieclip inclinato. Sto usando FlashMX 6.0.
Vi spiego meglio con questa immagine, che rappresenta il MovieClip “Piano”.

All’interno di Piano, ogni stanza gialla che vedete è un MC (MovieClip) diverso e il pallino rosso è un altro MC chiamato “pallino”.
Il concetto dell’animazione è che il pallino si muove all’interno delle stanze e transita da una stanza all’altra in maniera random, come se si trattasse di una persona che vaga per le sale.
Ora, a livello di codice, il MC pallino definisce e poi usa al suo interno una funzione per capire in che stanza si trova:
codice:
// calcola la stanza in cui ci troviamo
function calcolaStanza ()
{
stanza = "Nessuna stanza!";
// controllo per vedere se siamo nella foresteria
if( this.hitTest( _parent.foresteria))
{
stanza = _parent.foresteria;
}
// controllo sulle altre stanze….
if ….
…. return stanza;
}
NOTA: _parent qui rappresenta l’oggetto Piano, che contiene appunto tutti i MC delle stanze ed il MC pallino.
Ora, se io inserisco in una scena un'istanza del MC Piano, tutto funziona a perfezione: la funzione restituisce sempre la stanza giusta, quella in cui graficamente si vede che il pallino si trova al suo interno.
Ma se io INCLINO e RUOTO l’istanza di Piano, ecco che la funzione prende a restituire stanze che non centrano nulla con quella in cui il pallino si vede che si trova!
So che il problema sta nel fatto che, così definita, la funzione hitTest () considera i “riquadri” dei MC, così che se io inclino e ruoto, il riquadro delle stanze non è più il vero contorno della stanza…
Allora ho provato ad usare l’altra definizione di hitTest:
// dal manuale
myMovieClip.hitTest(x, y, indicatoreForma)
E quindi nel mio caso ho sostituito con questo frammento di codice:
_parent.foresteria.hitTest(this._x, this._y, true)
Eppure non funziona, anzi non resituisce mai true anche se il pallino si trova sulla stanza, piano inclinato o meno...
L’errore è nell’uso di hitTest() in quest’ultima versione che è forse errata, o avete qualche idea? Le coordinate _x e _y nei parametridevono essere globali e non locali? Se sì, come le converto esattamente? localToGlobal() non sono mai riuscito a capire da DOVE chiamarla esattamente…
Grazie della pazienza d’esser arrivati fin qui, spero di essermi spiegato!