Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C# XNA] Non capisco ((Game1)Game)
Forum - C# / VB.NET - [C# XNA] Non capisco ((Game1)Game)

Avatar
Linkinf22 (Normal User)
Rookie


Messaggi: 59
Iscritto: 28/06/2009

Segnala al moderatore
Postato alle 18:43
Mercoledì, 21/07/2010
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.

PM Quote
Avatar
el borto (Normal User)
Rookie


Messaggi: 47
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 19:03
Mercoledì, 21/07/2010
è 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 ^^

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:23
Giovedì, 22/07/2010
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.
Codice sorgente - presumibilmente C# / VB.NET

  1. PictureBox p = oggetto as PictureBox;



"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Linkinf22 (Normal User)
Rookie


Messaggi: 59
Iscritto: 28/06/2009

Segnala al moderatore
Postato alle 23:15
Giovedì, 22/07/2010
Ok, credo di aver capito.
Se avrò qualche altro dubbio riguardo al cast chiederò.

Grazie.

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

PM Quote