Oppure

Loading
21/07/10 16:43
Linkinf22
Questa domanda non è legata particolarmente a XNA, ma più al C#.
Sto leggendo un libro riguardante XNA, in un capitolo che parla dell' audio fa una cosa che non avevo mai visto prima in C#.
Nella classe Game1 crea un metodo (PlayCue) che fa sentire un suono.
Dopodichè in una classe che gestisce tutte le sprites nel metodo Update cerca le collisioni tra le sprites e se una sprite si scontra con la sprite controllata dal giocatore viene eseguito il metodo PlayCue, così facendo si sente il suono.
Però per eseguire il metodo PlayCue nel libro utilizza un modo che non avevo mai visto prima:

((Game1)Game).PlayCue();

((Game1)Game) ???

Cosa fa questa "roba"? Fa una specie di unione tra Game1 e Game o la mia ipotesi è totalmente sbagliata?

Attendo pazientemente.

Grazie in anticipo.
aaa
21/07/10 17:03
el borto
è un costrutto chiamato "cast" , si obbliga il compilatore a riconoscere un oggetto ( in questo caso Game) come del genere del cast indicato ( in questo caso Game1) .
mi spiego meglio :
se passo ad un metodo un oggetto qualsiasi

void StampaTag(object oggetto)

e so che l'oggetto in questione è un pictureBox posso scrivere :
void StampaTag(object oggetto)
{
Console.WriteLine( ((pictureBox)oggetto).Tag );
}

in questo modo obbligo il compilatore a riconoscere l'oggetto "oggetto" come del tipo pictureBox e quindi posso utilizzare i metodi e le variabili della classe indicata in questo caso la variabile "Tag", nel tuo caso invece il metodo "PlayCue()"
Spero di essermi spiegato bene ^^
aaa
22/07/10 7:23
Il Totem
Eh, vedi che il C# è poco chiaro? Comunque esiste anche l'operatore di cast "as", se mai ti dovesse capitare. Si comporta come l'operatore parentesi (cast), ma restituisce null se il casting non è possibile.
PictureBox p = oggetto as PictureBox;
aaa
22/07/10 21:15
Linkinf22
Ok, credo di aver capito.
Se avrò qualche altro dubbio riguardo al cast chiederò.

Grazie.

P.S.: Questo forum mi aiuta sempre :k:
aaa