为Lua创建属性
Creating properties for Lua
我不知道如何拼写标题,但我们开始了。
假设我做了一个Lua函数来创建一个出现在屏幕上的2D框,例如:
box = createObject("Box")
如何为box
创建属性,从而更改box
的外观或反应?例如,我可能想做
box.PositionX = 0
box.PositionY = 60
我如何在C++中做到这一点?
只要回答直接的问题本身,事情就很简单:
只需使用标准的metatable-aware添加/设置表-索引API。
如果我们看看盒子本身应该是什么样子,事情就会变得有趣:
- 如果
createObject "Box"
返回一个Lua表,并且您不需要对更改立即做出反应,那么就不要做任何特别的事情 - 如果
createObject "Box"
返回了一个Lua表,但您需要立即做出反应,那么让它充当代理对象,也就是说,通过从不将该元素添加到表本身来强制使用元表函数。重新映射到保存在专用索引或元表/元表函数闭包中的另一个索引或另一个表 - 如果
createObject "Box"
返回一个用户数据,请执行与2相同的操作,可能会将非lua值保存在C中以获得更快的访问/更高的效率,并使用环境表来获取所有其他值
相关文章:
- 即使使用 FILE_FLAG_DELETE_ON_CLOSE 属性创建文件,文件也会保留在磁盘上
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 是否可以在 c++ 中创建一个文件并为其提供属性以将其隐藏?(在 Ubuntu 上)
- 使用智能指针属性创建资源库函数?
- 创建新对象并立即为其设置属性时出现编译器错误
- 我创建了deque<CObject*>并添加了不同类型的元素。如何更改此元素的属性?
- 如何创建属性存储二进制文件
- 创建具有受限属性的类型
- 当我初始化了指针属性 allready 时,如何将 QGraphicsItem 向下投射到创建的类?
- 有没有一种方法可以创建具有广义属性的命名空间
- gtk_text_buffer_create_tag创建警告:'GtkTextTag'没有名为 'u0004' 的属性
- 如何手动创建具有不同 XML 属性的提升 ptree
- 在类中创建公共属性,该类是此类的实例
- 如何创建一个可以对同一类的多个对象进行操作的函数,访问C++中的私有属性
- 如何在Windows中创建扩展(自定义)文件属性
- 用C 在QT中创建自定义属性
- 如果我在一个类中有一个静态属性,并创建该类的许多新实例
- 我需要创建一个Display()方法,它将显示所有属性
- 用捆绑属性创建c++ Boost图
- 从另一个列表中的对象属性创建一个新的值列表