2009-07-08 36 views

回答

3

Actionscript中的私有变量往往在它们前面有一个_。然后你有没有_的getter/setter让他们公开访问。

1

在Actionscript 2.0中,_variable意味着它是一个对象的内置属性。但是,我在3.0之前停止使用Actionscript,所以我知道它可能已经改变为3.0。

2

您可能正在使用naming convention。从语言角度来看,没有特别的意义。

+0

我想这是一个命名约定,我想知道它是什么意思。 – Anton 2009-07-08 15:22:17

2

确实,在JavaScript中,人们用_表示“不要触及这个值”,因为控制JavaScript中的访问级别非常棘手......让变量真的无法从外部访问是一件非常痛苦的事情a ** ...

在ActionScript 2.0和1中,绝对没有规则...:D ...例如在类MovieClip中,在ActionScript 2.0中,您有属性,如_x_y。 ..但最好的事情是focusEnabled vs _focusrect,两个布尔人,一个确定,剪辑是否可以聚焦,其他是否有一个黄色的矩形,当聚焦...

无论这是真的涉及到一些东西从Flash播放器内部来,或者它仅仅是随机的......注意,_global_root_accProps并除此之外,它只出现在的TextFieldMovieClipButton性质...

__(两个下划线)表示魔术在Flash Player ... __resolve是一个相当神奇的方法......和__proto__是一个神奇的属性,如果你愿意......而且,这不是很一致无处不在...

现在说到ActionScript 3.0,整个API不会使用任何下划线。 ..很多人,包括我在内,选择了与表示$ S和_小号privateprotectedinternal变量...但这是一个完全任意的命名惯例,应该使代码可读性,防止命名冲突......

格尔茨

back2dos

1

简单 - _ {您的变量名}意味着它是私有的。

在AS3,可以定义getter和setter等

public function get myVar():String 
{ 
    return _myVar; 
} 

此最终被类的透明外部并且表示作为

myclass.myvar 

因此getter和setter在AS3基本上看起来像模糊特性。所以你需要一些方法来区分 - 所以你开始使用“_”。

2

这将有可能写

class Hello{ 
    private var x:Number; 
    public function get x():Number{...} 
    public function set x(value:Number):void{...} 

    protected var y:Number; 
    public function get y():Number{...} 
    public function set y(value:Number):void{...} 
} 

但每ú访问它们来自类或子类中的时候,你就需要指定ü意味着其中之一,因为它们具有相同的名称(这是可能的,他们在不同的名字空间)。这看起来像

var before:Number = private::x; 

或使用吸气:

var before:Number = public::x; 

为保护瓦尔这将即使在所有子类未完待续...

人家那不喜欢的下划线可以使用任何其他语法使名称唯一,例如大写的第一封信给像c#中的getter和setter。

0

我倾向于在所有私有变量前添加“_”,即使没有getter或setters也是如此。这种方法允许我在任何函数操纵其私有变量时立即知道,同时浏览代码。这似乎是一件小事,但它可能非常有用。

尽量不要使用受保护的变量,除非你完全知道你在做什么。他们是邪恶的。你永远不会使用它的唯一原因是允许子类访问超类中的变量。但是,如果受保护变量的值对超类非常重要,那么超类永远不会知道子类是否修改它。更好的做法是保密,并为子类提供一个受保护的getter和/或setter,尽管这是一个更多的工作。通过这种方式,超类可以响应任何改变值的尝试。

相关问题