Archive for 16 novembre 2009
Eventi – Guida SDL.NET
nov 16
Ok, eccoci arrivati agli Eventi: per poter comprendere al meglio quest’importante concetto, riprendiamo il codice che avevamo usato nel nostro Hello World. Per non farvi perdere tempo tornando indietro, ve lo ripropongo qui:
–
[code]]czo3MTQ6XCINCnVzaW5nIFNkbERvdE5ldC5Db3JlOw0KDQp1c2luZyBTZGxEb3ROZXQuR3JhcGhpY3M7DQoNCm5hbWVzcGFjZSBTZGx7WyYqJl19RG90TmV0RXhhbXBsZXMuU21hbGxEZW1vcw0Kew0KDQogICAgcHVibGljIGNsYXNzIEhlbGxvV29ybGQNCiAgICB7DQogICAgICAgIHtbJiomXX1bU1RBVGhyZWFkXQ0KICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpDQogICAgICAgIHsNCiAgICAgICAgICAgIEhlbGxve1smKiZdfVdvcmxkIGFwcCA9IG5ldyBIZWxsb1dvcmxkKCk7DQogICAgICAgICAgICBhcHAuR28oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB7WyYqJl19dWJsaWMgSGVsbG9Xb3JsZCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIFZpZGVvLlNldFZpZGVvTW9kZSg0MDAsIDMwMCk7DQogIHtbJiomXX0gICAgICAgICAgVmlkZW8uV2luZG93Q2FwdGlvbiA9IFwiSGVsbG8gV29ybGQhXCI7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWN7WyYqJl19IHZvaWQgR28oKQ0KICAgICAgICB7DQogICAgICAgICAgICBFdmVudHMuUXVpdCArPSBuZXcgRXZlbnRIYW5kbGVyPFF1aXRFdmVudHtbJiomXX1BcmdzPih0aGlzLlF1aXQpOw0KICAgICAgICAgICAgRXZlbnRzLlJ1bigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2e1smKiZdfW9pZCBRdWl0KG9iamVjdCBzZW5kZXIsIFF1aXRFdmVudEFyZ3MgZSkNCiAgICAgICAgew0KICAgICAgICAgICAgRXZlbnRzLlF1aXR7WyYqJl19QXBwbGljYXRpb24oKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NClwiO3tbJiomXX0=[[/code]
--
Per prima cosa, analizziamo il metodo Go. All'interno di esso, analizziamo il primo comando, ovvero:
Events.Quit += new EventHandler<QuitEventArgs>(this.Quit);
Che cosa abbiamo fatto? Semplice, abbiamo appena gestito un evento del programma. Ma cosa vuol dire tutto questo? Quando noi creiamo un gioco con SDL.NET, esistono degli "Eventi" che vengono eseguiti in determinate condizioni: per esempio il OnKeyboardDown, che viene lanciato tutte le volte che premiamo un pulsante sulla tastiera.
Oppure l'evento Tick, che viene lanciato ad ogni fotogramma. O ancora, l'evento Quit, che abbiamo visto nel nostro codice, che viene eseguito prima di uscire dal programma. In questo modo il lavoro che il software deve fare può essere alleggerito di tanto.
Ecco quindi spiegata la riga di codice: in poche parole noi associamo un metodo da noi creato (il Quit) ad un evento previsto dal sistema (Events.Quit). Nel nostro caso il metodo Quit è un semplice metodo che consente di uscire dall'applicazione attraverso il metodo Events.QuitApplication(). Scritto in questo modo, potrebbe non significare molto.
Ma nel caso, in fase di uscita, si vogliano cancellare delle variabili, allora possiamo mettere nel nostro metodo Quit() ciò che serve. Spero di essere stato chiaro e vi consiglio di fare molte prove per capire bene il funzionamento del sistema.
Sulla Wiki ufficiale del progetto c'è scritto che il sistema degli eventi è molto utile ed intuitivo in fase di gestione dell'input. Senza dubbio vero, ma non è di certo tutto: c'è una grande agevolazione anche nella gestione di musica (per esempio l'evento MusicFinished, che come suggerisce il nome viene lanciato solo quando termina l'esecuzione di un brano musicale), delle finestre (VideoResize, indovinate che fa?
) e di altri aspetti che in seguito analizzeremo meglio.
Tra i comandi scritti nel metodo Go, inoltre, troviamo anche Run. Run è un metodo importantissimo per il gioco, in quanto è proprio esso che avvia il loop principale del programma, il ciclo che verrà eseguito fin quando non decideremo di uscire.
Oltre a Run ecco altri metodi della classe Events:
- CloseAudio, CloseMixer, CloseJoystick e così via, che chiudono i sottosistemi SDL indicati;
- Close, che chiude tutti i sottosistemi dell'SDL.
- QuitApplication, che permette l'uscita dal programma.
Un saggio uso degli eventi, insomma, aiuta tantissimo nello sviluppo della propria applicazione, oltre a garantire una facile lettura del codice e manutenzione. Che altro potrei dire? In realtà ben poco, ho già parlato abbastanza. Andiamo avanti ed iniziamo a vedere come si può caricare un immagine e visualizzarla su schermo.
Prima di Iniziare – Guida SDL.NET
nov 16
Bene, la prima parte è andata. Abbiamo creato il nostro “Hello World”. La finestrella nera si è aperta, come prova della corretta impostazione dell’ambiente di sviluppo. Ovviamente, siamo ancora all’inizio. Continuiamo quindi quest’avventura alla scoperta dell’SDL.NET.
In questa seconda parte della guida parleremo degli aspetti più importanti della libreria, legati essenzialmente all’input (tastiera, mouse e joypad) ed all’output (grafica, audio, gestione dei fonts TrueType).
Ma non è tutto: prima di iniziare a lavorare con tutti questi aspetti è importantissimo spiegare cosa sono gli Eventi, come funzionano e a cosa servono. Sulla Wiki ufficiale del progetto SDL.NET gli eventi vengono spostati avanti di una lezione rispetto agli elementi grafici: nonostante ciò ho preferito studiare (e quindi riportare su questa guida) prima gli eventi e poi occuparmi di tutti gli altri ambiti. Il motivo è presto spiegato: gli eventi sono il cuore del funzionamento di un programma realizzato con SDL.NET.
Per questo motivo quindi la seconda parte della guida provvederà prima a spiegare gli Eventi, poi la gestione dell’Output, poi dell’Input. Infine prenderemo in considerazione un template da usare per le proprie applicazioni, ovvero una sorta di codice “standard” pronto da usare per una buona quantità di programmi in SDL.NET.
Bene, proseguiamo!



Ultimi Commenti