我正在阅读这里的教程:http://www.adobe.com/devnet/actionscript/learning/oop-concepts/objects-and-classes.html和点符号部分的第二段。它使用ActionScript 3中的“Sprite”类。本教程创建了一个Sprite类的实例,并将其命名为myFirstObject。它说..
“然后,使用该引用变量和点表示法,将值分配给实例的x和visible属性,并调用startDrag和stopDrag方法。”
我注意到属性后面没有()。例如: myFirstObject.x = 300;
与方法相比
myFirstObject.startDrag();
那么,实例的属性和方法之间有什么区别?我认为如果我能看到Sprite类会有所帮助,但是当我尝试google时,我无法找到它。
答案 0 :(得分:0)
属性具有Get()和Set()方法,允许您使用相同的调用来获取或分配值。为属性分配值时,将调用Set方法。检索值时,您正在使用Get方法。属性会根据操作自动调用相应的Get或Set方法。
为了帮助您可视化设置,这里有一个示例属性(VB.Net):
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Private Set(ByVal value As String)
_name = value
End Set
End Property
要调用它,您可以使用:
MyObject.Name = "Test" <- Sets the name to test
MsgBox("The name is: " & MyObject.Name) <- Gets the value of name
虽然这个例子在VB.Net中,但理论仍然是相同的。
另一方面,方法相当于Get或Set例程。作为一种方法,您必须调用它并在括号内提供参数。即使它没有,你仍然需要()。如果要更新变量,则必须将值传递给方法,而不是将其设置为等于值。
以下是一个类似的例子:
Private _name As String
Public Function Name(Optional ByVal strName as String = "") as String
If strName <> "" then
_name = strName
End If
Return _name
End Function
以下是如何使用它的类似示例:
MyObject.Name("Test") <- Sets the name to test
MsgBox("The name is: " & MyObject.Name()) <- Gets the value of name
答案 1 :(得分:0)
属性和方法类似,两者都是作为接受参数的过程实现的。通常,属性存储对象的数据,方法是可以要求对象执行的操作。