Wie kann ich Objekte an eine exponierte Luaj-Funktion übergeben?

7

Ich versuche, einen Controller mit Luaj + Java zu bauen. Ich habe die folgenden Java-Klassen

%Vor%

und das folgende Lua-Skript für den Controller:

%Vor%

Ich würde im Idealfall einen Controller definieren (geschrieben in lua), in dem ich die gesamte Programmlogik behalten werde, und ich möchte die API von diesem Controller meinem Java-Code zugänglich machen. Ich habe versucht, den folgenden Ansatz zu verwenden:

%Vor%

Ich kann das Objekt nicht an den LuaValue übergeben. Wie kann ich ein Java-Objekt an das Lua-Skript übergeben?

PS: Kombinieren Benutzer bei Verwendung von Java und eingebettetem Scripting in der Regel Funktionen in einem Skript oder gibt es für jeden Callback ein separates Skript?

    
Vitaly Omelchenko 10.09.2012, 19:17
quelle

1 Antwort

24

Ich habe Einträge gesucht und gefunden, dass Sie nicht beantwortet haben. Ihre Frage war interessant und ließ mich suchen. Dann stellte ich fest, dass es vor 2 Jahren gefragt wurde ... Ich hoffe, dass meine Antwort für jemand anderen nützlich sein kann! Code basiert auf luaj-3.0-alpha1.

Wir brauchen ein gültiges Lua-Skript (Sie haben das function -Schlüsselwort vergessen):

%Vor%

Ich habe ein bisschen Spur hinzugefügt ... Ich habe auch ähnliche Klassen wie deine gemacht:

%Vor%

Hinzufügen eines Feldes, um dies auch zu testen. Für meinen Test habe ich die Klassen innerhalb der Methode deklariert, die ihre Instanzen erzeugt:

%Vor%

Ich habe zuerst versucht, diese Java-Objekte mit LuaValue luaDog = LuaValue.userdataOf(dog); in Lua zu konvertieren, aber es funktioniert nicht: Wir haben tatsächlich userdata, wie die Traces zeigen, aber keine Metatabelle, so dass wir die Methoden weder aufrufen noch auf die Felder zugreifen können .

Nachdem ich viel gesucht hatte, fand ich die richtige Beschwörungsformel heraus:

%Vor%

Ich schätze die Luaj-API ... :-) Wahrscheinlich mehr für Java-Programmierer gemacht, während andere Bibliotheken eher auf Lua / C-Programmierer abzielen ...

    
PhiLho 25.10.2012, 16:17
quelle

Tags und Links