Domanda

Alla fine ho potuto ottenere qualsiasi ulteriore con il mio programma a causa delle varie carenze di VB.NET (supporto audio male, eventi di lettura nel mezzo di esecuzione, l'input da tastiera molto debole, ecc). Così ho provato SDL.NET 6.1.
Nonostante la sua terribile documentazione, sono stato in grado di risolvere il mio codice di usarlo e mi piace!

Ma c'è un problema. Non so come impostare le impostazioni delle applicazioni per esso. L'oggetto di avvio sicuramente dovrebbe essere una classe (gli esempi sono sempre nelle classi, non moduli), ma una classe di avvio particolare, ha una forma! Questo è un male perché SDL fa la sua propria finestra tramite SetVideoMode; non hai bisogno di un modulo. Così, quando la forma di costruzione new () termina, si crea una forma inutile e si dispone di due finestre.

Ho cercato di effettuare una chiamata del ciclo motore di gioco all'interno di New () in modo che il gioco inizia senza New () mai finire. Il gioco funziona normalmente, e questo risolve il problema "seconda finestra" ... ma non può essere chiuso! tasto X non fa nulla, invita a Events.QuitApplication o Me.Close sono palesemente ignorati, ecc.

Sono perplesso. Sembra che ho bisogno di impostare una classe di non-forma, come l'oggetto di avvio, ma non me lo permette.

Oh, a proposito, sembra che ci siano due cose chiamate "SDL NET". Per chiarire, sto usando questo , che esiste nella SdlDotNet namespace.

Ah, ho dimenticato di dire, ho anche notato che molti degli esempi hanno una riga che dice "[STAThread]". È questo è importante?

Modifica : Ho già ricevuto e accettato una risposta per la mia domanda, ma voglio raccontare agli altri ciò che il problema è con l'uscita / chiusura l'applicazione, anche se non era la mia domanda:
voi mentre SDL.NET consente di ricevere input ed eseguire altri eventi senza dover interrompere l'esecuzione di logica, l'applicazione ancora non può uscire, mentre la logica è in esecuzione . Così ho trovato il modo migliore per raccontare la vostra applicazione SDL.NET to Quit nel bel mezzo della corsa logica è quella di utilizzare le seguenti due righe:

SdlDotNet.Core.Events.QuitApplication
End

Mettere questi nel gestore per l'evento SdlDotNet.Core.Events.Quit, così come in qualsiasi altro luogo si desidera che il programma per smettere.

È stato utile?

Soluzione

  

L'oggetto di avvio sicuramente dovrebbe essere una classe (gli esempi sono sempre nelle classi, non moduli)

Ecco il suo errore. Non c'è alcuna differenza tra una classe e un modulo VB dal punto di vista CLR. Quindi, solo renderlo un modulo con Main e andare avanti. Non v'è alcun bisogno di una classe. Ho il sospetto che si sta guardando C # esempi, che utilizzano le classi - ma è perché non esiste una cosa come un modulo in C #

.

[STAThread] probabilmente non farà alcuna differenza per SDL. E 'importante per le applicazioni di interfaccia utente (entrambe le WinForms e WPF lo richiedono), ma non credo che SDL fa tutte le chiamate COM, quindi non dovrebbe importa se il thread è STA o meno. E 'solo qualcosa che Visual Studio mette in Main in nuovi progetti per impostazione predefinita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top