Actionscript 3 ActionScript3类的工作原理
我需要一些帮助来理解ActionScript3中的类是如何工作的。我知道你从“包”开始,为什么,然后导入任何必要的库,然后命名类,说明它是否是公共/私有的,是否扩展了任何内容 那之后我就不明白了。您似乎编写了“(public)函数类名() 我不明白你为什么要这样做,以及花括号里的内容 我可能错过了一点以前的阅读,因为我读了一点,但我似乎看不懂Actionscript 3 ActionScript3类的工作原理,actionscript-3,class,Actionscript 3,Class,我需要一些帮助来理解ActionScript3中的类是如何工作的。我知道你从“包”开始,为什么,然后导入任何必要的库,然后命名类,说明它是否是公共/私有的,是否扩展了任何内容 那之后我就不明白了。您似乎编写了“(public)函数类名() 我不明白你为什么要这样做,以及花括号里的内容 我可能错过了一点以前的阅读,因为我读了一点,但我似乎看不懂 有人能给我解释一下吗?谢谢。与类同名的函数是a。花括号中的函数基本上是创建对象时立即执行的代码的一部分。尝试搜索有关构造函数的信息,我认为它们存在于每种面
有人能给我解释一下吗?谢谢。与类同名的函数是a。花括号中的函数基本上是创建对象时立即执行的代码的一部分。尝试搜索有关构造函数的信息,我认为它们存在于每种面向对象编程语言中(我可能错了),所以你有很多资源
您也可以在上阅读有关此概念的内容。与类同名的函数是构造函数。它是可选的,因此如果不需要它,您可以将其省略。将添加默认构造函数,而默认构造函数基本上不起任何作用 构造函数允许您编写在创建类的实例后立即执行的代码(即当另一位代码运行
newclassname()时)
。您通常会使用它来初始化类使用的一些变量。定义构造函数还允许您处理构造函数参数,其他代码在使用新的
运算符时可以传递这些参数。ActionScript 3类
程序包语句
好的,首先就像你提到的,一个类必须被一个包
1包装。这给了我们第一个块,在这里你需要定义这个类
package
{
// Your class here.
}
package
语句反映类相对于.fla
2的位置。例如,如果您在与project.fla相同的目录中有一个文件夹“classes”,则该文件夹中的类将需要一个package语句来反映:
package classes
{
// Your class here.
}
定义类 在一个包语句中,您可以插入一个类。不要将其与包本身混淆,包本身可以包含许多类-每个类只需要有自己的文件和相同的包语句 类别定义最多由5个部分组成:
内部
或公共
。内部
类只能由同一包中的类看到,而公共
类可以从项目中的任何位置看到类
中创建一个名为“Person”的类,那么我们将得到:
package classes
{
public class Person
{
// Class qualities here.
}
}
属性 类可以包含属性。属性是使用
var
关键字定义的。它们可能属于多个名称空间(包括您自己的名称空间)中的一个,用于保存属于类的值。属性通常聚集在类的顶部
我们的人
班级可以享受身高
和体重
的属性:
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
}
}
可以通过您创建的Person
的任何实例访问这些属性。每个实例都有自己的一组属性
类构造函数(我相信这就是您要问的问题) 构造函数用于保存应在创建类实例后立即运行的逻辑。类构造函数与类本身具有相同的名称。它必须是
public
,并且不返回任何内容。构造函数可以接受参数,这些参数通常用于传递对该类或r的依赖项的引用所需的值
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
类的地方完成,在本例中,该类位于项目中的任何地方,因为我们已将该类公开
尽管该类是public
,但从它所属的包之外的任何地方访问它都需要使用import
语句。该语句需要在属于不同包的任何类中使用。import
语句与包使用的名称相同,并且包含要在末尾包含的类的名称:
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您可以添加更多源路径,并且包可以与之相关。非常感谢您的详细回复。我非常感谢。也感谢其他人的回复。:)我做到了