2011-01-14 8 views
1

Im mit LuaObjcBridge und ich bin eine Methode aus Lua wie folgt aufrufen:Lua: Aufruf c Methode, die Benutzerdaten zu Lua gibt

local position = owner:position() 

in Objective-C dies gibt eine CGPoint Struktur mit X und Y, welche die Bridge konvertiert in Benutzerdaten. Also CGPoint struct -> Lua userdata. Wie würde ich in Lua auf die X- und Y-Werte der Userdata zugreifen?

+1

Ich habe nicht LuaObjcBridge verwendet, aber ich habe eine Menge Erfahrung mit Lua und eine benutzerdefinierte Brücke. Ich schaute auf den Code und ich sehe keine Unterstützung in der Metatabelle, um Zugriff auf Strukturelemente zu ermöglichen. Es scheint, dass das Metatable nur versucht, objektive C-Methoden für vollständige Objekte zu überbrücken. Sie könnten Position.x oder Position.y versuchen, aber es sieht nicht so aus, als würden diese funktionieren. In diesem Fall könnten Sie eigene überbrückte C-Funktionen schreiben, die die Werte aus den Benutzerdaten extrahieren. –

+0

Ich schrieb eine ausführliche Antwort dafür, dies in C++ von Hand zu tun. Ich weiß, dass es nicht genau das ist, wonach du fragst, aber es kann helfen. http://StackOverflow.com/Questions/3481856/Sending-Variable-Pointers-Back-and-forth-between-c-and-Lua/3506654#3506654 Der einzige Unterschied wäre die Art und Weise, wie die Klassen zusammengesetzt sind, ist C++ vs. obj-c –

Antwort

1

Sie müssen:

  • definieren MetaTable, das Methoden enthält, die
  • Satz MetaTable auf Benutzerdaten auf Benutzerdaten arbeiten
  • denselben MetaTable wie __index Feld auf Benutzerdaten

gesetzt oder :

  • s et einige Methoden, die auf Userdaten arbeiten
  • setzen sie Lua

Blick auf http://www.lua.org/pil/28.1.html

Benutzerdaten kann nichts tun, selbst, müssen Sie Methoden hinzufügen, die mit ihm etwas zu tun.