从实例 ID 访问对象成员

Posted

技术标签:

【中文标题】从实例 ID 访问对象成员【英文标题】:Access object members from Instance ID 【发布时间】:2013-05-07 12:06:51 【问题描述】:

我从 collision_line() 获取对象的实例 ID

现在我有了这个实例,我想得到它是 image_angle,但是当我尝试这样做时,我得到了一个 'unknown variable' 消息。

我该怎么办?

【问题讨论】:

【参考方案1】:

这个collision_line()的是什么? collision_line() 函数返回一个实例 id - 但是当什么都没有找到时它返回 noone (-4).. 所以你必须先测试一下:

var inst, imgangle;
inst = collision_line(...);
if (inst != noone) 
    imgangle = inst.image_angle;
    //etc etc

或者(在 GM 中更干净),我们可以“滥用”with 声明。 With 从给定实例 id 的角度执行以下所有代码(或在给定对象 id 时针对某个对象的所有实例)。 但是noone 的值会自动阻止任何执行。

var inst, imgangle;
inst = collision_line(...);
with (inst) 
    imgangle = image_angle; 
    //note that we do no longer have to put "inst." before getting a variable
    //etc etc

【讨论】:

IMO,以这种方式使用with() 是完全明智的,而不是滥用意外行为。您在找到的任何实例上运行代码 - 如果没有找到,则不运行代码。 我在那个时候发现了解决方案,但感谢您抽出时间回答:)

以上是关于从实例 ID 访问对象成员的主要内容,如果未能解决你的问题,请参考以下文章

受保护的成员不能通过指针或对象 c++ 访问

JAVA 静态方法不能访问直接

成员内部类

PHP面向对象编程简单实例

iOS 开发:成员变量(属性,实例变量)的相关知识

python 面向对象(成员)