我需要一点帮助来了解类在 Actionscript 3 中的工作方式。我了解您从“包”开始以及为什么然后导入任何必要的库,然后命名该类并说明它是公共/私有的并扩展任何内容。
在那之后是我不明白的。看来你写“(公共)函数类名()
我不明白你为什么这样做以及大括号中的内容。
我可能错过了一些较早的阅读,因为我已经阅读了一些内容,但似乎无法理解。
有人可以尝试向我解释吗?谢谢。
我需要一点帮助来了解类在 Actionscript 3 中的工作方式。我了解您从“包”开始以及为什么然后导入任何必要的库,然后命名该类并说明它是公共/私有的并扩展任何内容。
在那之后是我不明白的。看来你写“(公共)函数类名()
我不明白你为什么这样做以及大括号中的内容。
我可能错过了一些较早的阅读,因为我已经阅读了一些内容,但似乎无法理解。
有人可以尝试向我解释吗?谢谢。
package
声明。_
好的,首先就像您提到的那样,一个类必须由package
1包装。这给了我们第一个块,您需要在其中定义类。
package
{
// Your class here.
}
该package
语句反映了类相对于.fla
2的位置。例如,如果您在与项目 .fla 相同的目录中有一个文件夹“classes”,那么该文件夹中的类将需要一个反映以下内容的包语句:
package classes
{
// Your class here.
}
定义类。
在包语句中,您可以插入一个类。不要将此与包本身混淆,包本身可以包含许多类——每个类只需要有自己的文件和相同的包语句。
一个类定义最多由 5 个部分组成:
internal
或public
。一个internal
类只能被同一个包中的类看到,而public
类可以从项目中的任何地方看到。如果你想在包中创建一个名为“Person”的类classes
,那么我们最终会得到:
package classes
{
public class Person
{
// Class qualities here.
}
}
属性。
类可以包含属性。属性是使用var
关键字定义的。它们可能属于多个命名空间之一(包括您自己的),并用于保存属于您的类的值。最常见的属性是在类的顶部聚集在一起。
我们的班级Person
可以享受以下属性:height
weight
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
}
}
可以通过Person
您创建的任何实例访问这些属性。每个实例都有自己的一组这些属性。
类构造函数(我相信这就是你要问的)。
构造函数用于保存应在创建类实例后立即运行的逻辑。类构造函数与类本身具有相同的名称。它必须是public
并且它不返回任何东西。构造函数可以接受参数,这些参数通常用于传递对该类的依赖项或所需值的引用。
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
// Constructor.
public function Person(height:Number, weight:Number)
{
this.height = height;
this.weight = weight;
}
}
}
方法。
方法用于保存调用该方法时可以运行的逻辑。方法通常返回值并且可以接受参数。方法可以属于您希望属性能够属于的任何命名空间。
我们可能希望能够轻松确定Person
我们创建的每个实例的 BMI,因此我们应该为此创建一个方法:
package classes
{
public class Person
{
// Properties.
public var height:Number = 170;
public var weight:Number = 65.5;
// Constructor.
public function Person(height:Number, weight:Number)
{
this.height = height;
this.weight = weight;
}
// Determine my BMI and return the result.
public function getBMI():Number
{
return weight / (height * height);
}
}
}
实例。
现在我们已经定义了我们的新类,我们可以使用new
关键字创建这个类的实例。这可以从可以访问Person
该类的任何地方完成,在这种情况下,它是项目中的任何地方,因为我们已经创建了 class public
。
虽然类是public
,但从它所属的包之外的任何地方访问它都需要使用import
语句。该语句需要在属于不同包的任何类中使用。该import
语句遵循用于 的相同名称,package
并在末尾包含您要包含的类的名称:
import classes.Person;
导入Person
后,您可以创建它的实例并将它们分配给具有不同height
和weight
值的变量:
var marty:Person = new Person(71, 1.76);
var bruce:Person = new Person(96.4, 1.72);
getBMI()
然后,我们可以使用他们的方法获得每个人的 BMI :
trace(marty.getBMI()); // 22.9
trace(bruce.getBMI()); // 32.6
1您可以将类放在可以在同一个 .as 文件中引用的包之外。
2您可以添加更多源路径,并且包可以相对于该路径。
与类同名的函数是构造函数。它是可选的,因此如果您不需要它,可以将其省略。将添加一个默认构造函数,它基本上什么都不做。
构造函数允许您编写在创建类的实例后立即执行的代码(即当另一段代码运行时new ClassName()
。您通常会使用它来初始化类使用的一些变量。定义构造函数还可以让您处理构造函数参数,其他代码在使用运算符时可以传递的参数new
。