您可能已经弄清楚了这一点,或者现在已经放弃了 Corona,但是这里有一个答案,我将加两分钱:
您可以将任何您想要的属性添加到您的球对象。您不必显式声明属性——它们是在您为其赋值时自动创建的。例如,要添加“半径”属性,只需在创建“球”对象后执行此操作:
ball.radius = 20
完成后,假设您已将碰撞事件处理程序附加到球本身,球作为“self”参数传递,您可以使用 self.radius 获取半径:
local radius = self.radius
如果您已将事件处理程序附加到某个其他对象,则球将作为“事件”参数的“其他”属性传递。因此,使用您的井示例,如果您将事件处理程序附加到井上,那么您将获得球的半径:
local radius = event.other.radius
当然,如果您有其他(非球)对象也可以击中井,并且这些对象没有“半径”属性,那么您必须确保“event.other”实际上是一个“球”对象首先。如果你不这样做,那么当你尝试获取半径时你会得到“nil”。事实上,您可以使用这种行为来检测另一个对象实际上是一个球:
local radius = event.other.radius
if radius then
-- may be safe to assume event.other is a ball
else
-- something else hit the well
end
希望这可以帮助。我自己才刚接触 Corona 一个月,所以...