Pages: 1
Bonjour à tous
De retour sur mon vieux projet d'adaptation du jeu Skweek débuté en Freebasic avec le moteur Irrlicht, j'ai décidé de m'y remettre mais cette fois en .net via Irrlicht.Net CP (étant donné que le wrapper officiel est à la ramasse...)
Je bloque sur un énorme soucis au niveau de la gestion de OnEvent en VB.Net... pour faire simple voici un bout du code orginal en C# avec la partie qui m'interesse commentée :
//Le code est volontairement raccourci IrrlichtDevice device = new IrrlichtDevice(drivertype, optimalmode.Resolution, optimalmode.Depth, fullscreen, true, false, false); //---------------- LE ONVENTDELEGATE en C# ----------------------------------- device.OnEvent += new OnEventDelegate(device_OnEvent); //------------------------------------------------------------------------------------- while (device.Run() && !Exit) { driver.BeginScene(true, true, Color.From(255, 50, 50, 50)); scene.DrawAll(); guienv.DrawAll(); driver.EndScene(); } device.Dispose(); //---------------------------GESTION DE ONVENT EN C# --------------------------------------------- static bool device_OnEvent(Event ev) { if (ev.Type == EventType.LogTextEvent) { Console.WriteLine(ev.LogText); return true; } return false; } //--------------------------------------------------------------------------------------------------------
Si maintenant je tente une conversion en VB.Net j'obtient ceci :
//Le code est volontairement raccourci Dim device As New IrrlichtDevice(drivertype, optimalmode.Resolution, optimalmode.Depth, fullscreen, True, False, False) //---------------- LE ONVENTDELEGATE en VB.Net ----------------------------------- device.OnEvent += New OnEventDelegate(device_OnEvent) //------------------------------------------------------------------------------------- While device.Run() driver.BeginScene(True, True, Color.From(255, 50, 50, 50)) scene.DrawAll() guienv.DrawAll() driver.EndScene() End While device.Dispose() '---------------------------GESTION DE ONVENT EN VB.Net --------------------------------------------- Private Function device_OnEvent(ev As [Event]) As Boolean If ev.Type = EventType.LogTextEvent Then Console.WriteLine(ev.LogText) Return True End If Return False End Function //--------------------------------------------------------------------------------------------------------
Sauf que la ligne suivante engendre 2 erreurs :
device.OnEvent += New OnEventDelegate(device_OnEvent)
Les erreurs :
Erreur 1 'Public Event OnEvent(ev As IrrlichtNETCP.Event) As Boolean' est un événement. Il ne peut donc pas être appelé directement. Utilisez une instruction 'RaiseEvent' pour déclencher un événement. D:\Sources\Irrlicht.net\IrrlichtVB.net\VideoInit.vb 30 9 IrrlichtVB.net
ainsi que
Erreur 2 Le délégué 'IrrlichtNETCP.OnEventDelegate' requiert une expression 'AddressOf' ou une expression lambda en tant qu'unique argument de son constructeur. D:\Sources\Irrlicht.net\IrrlichtVB.net\VideoInit.vb 30 47 IrrlichtVB.net
Et impossible de m'en sortir vu le manque de code en VB.Net utilisant le wrapper...
Je fais appel aux codeur VB.Net ou aux autres ayant trouver ma coquille...
Merci d'avance
Dernière modification par BMarleyFR (30-06-2011 13:33:12)
Hors ligne
Cela ne va pas t'aider sur ton soucis, mais si tu es toujours adepte de FreeBasic et d'Irrlicht, tu as N3xtD.
http://www.n3xt-d.org.
Hors ligne
Re-Bonjour,
En vérité mon souhait est de justement d'abandonner Freebasic au profit du .net que je pratique déjà depuis un moment.
Et j'ai trouvé ma solution, c'était balot... Et pourtant ça faisait déjà quelque jour que je m'arrachais les cheveux (qui me manquent déjà d’ailleurs :p) , alors si certains sont comme moi voici la gestion du Onevent en VB.Net
//Cette ligne : //---------------- LE ONVENTDELEGATE en VB.Net ----------------------------------- device.OnEvent += New OnEventDelegate(device_OnEvent) //------------------------------------------------------------------------------------- //Etait en fait : //---------------- LE ONVENTDELEGATE en VB.Net ----------------------------------- AddHandler device.OnEvent, AddressOf device_OnEvent //------------------------------------------------------------------------------------- //Et voici un exemple pour traiter les events : Public Function device_OnEvent(ByVal ev As [Event]) As Boolean If ev.Type = EventType.KeyInputEvent And ev.KeyPressedDown And ev.KeyCode = KeyCode.Escape Then Debug.Print("OK") End If Return False End Function
On en apprend tout les jours quand on apprend tout seul :p , Moins vite forcement...
Hors ligne
C'est bien quand on arrive à trouver la solution
cool.
Hors ligne
Pages: 1