Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScript3类的工作原理_Actionscript 3_Class - Fatal编程技术网

Actionscript 3 ActionScript3类的工作原理

Actionscript 3 ActionScript3类的工作原理,actionscript-3,class,Actionscript 3,Class,我需要一些帮助来理解ActionScript3中的类是如何工作的。我知道你从“包”开始,为什么,然后导入任何必要的库,然后命名类,说明它是否是公共/私有的,是否扩展了任何内容 那之后我就不明白了。您似乎编写了“(public)函数类名() 我不明白你为什么要这样做,以及花括号里的内容 我可能错过了一点以前的阅读,因为我读了一点,但我似乎看不懂 有人能给我解释一下吗?谢谢。与类同名的函数是a。花括号中的函数基本上是创建对象时立即执行的代码的一部分。尝试搜索有关构造函数的信息,我认为它们存在于每种面

我需要一些帮助来理解ActionScript3中的类是如何工作的。我知道你从“包”开始,为什么,然后导入任何必要的库,然后命名类,说明它是否是公共/私有的,是否扩展了任何内容

那之后我就不明白了。您似乎编写了“(public)函数类名()

我不明白你为什么要这样做,以及花括号里的内容

我可能错过了一点以前的阅读,因为我读了一点,但我似乎看不懂


有人能给我解释一下吗?谢谢。

与类同名的函数是a。花括号中的函数基本上是创建对象时立即执行的代码的一部分。尝试搜索有关构造函数的信息,我认为它们存在于每种面向对象编程语言中(我可能错了),所以你有很多资源


您也可以在上阅读有关此概念的内容。

与类同名的函数是构造函数。它是可选的,因此如果不需要它,您可以将其省略。将添加默认构造函数,而默认构造函数基本上不起任何作用

构造函数允许您编写在创建类的实例后立即执行的代码(即当另一位代码运行
newclassname()时)
。您通常会使用它来初始化类使用的一些变量。定义构造函数还允许您处理构造函数参数,其他代码在使用
新的
运算符时可以传递这些参数。

ActionScript 3类 程序包语句

好的,首先就像你提到的,一个类必须被一个
1包装。这给了我们第一个块,在这里你需要定义这个类

package
{
    // Your class here.
}
package
语句反映类相对于
.fla
2的位置。例如,如果您在与project.fla相同的目录中有一个文件夹“classes”,则该文件夹中的类将需要一个package语句来反映:

package classes
{
    // Your class here.
}

定义类

在一个包语句中,您可以插入一个类。不要将其与包本身混淆,包本身可以包含许多类-每个类只需要有自己的文件和相同的包语句

类别定义最多由5个部分组成:

  • 命名空间。类可以是
    内部
    公共
    内部
    类只能由同一包中的类看到,而
    公共
    类可以从项目中的任何位置看到
  • 类名
  • 基类(可选)。如果定义了基类,则新类将作为该类的扩展,继承基类的所有特性
  • 要实现的接口(可选)。接口是一个高级主题,因此我建议您暂时忘记这些,直到AS3和OOP有所发展
  • 如果您想在包
    中创建一个名为“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您可以添加更多源路径,并且包可以与之相关。

    非常感谢您的详细回复。我非常感谢。也感谢其他人的回复。:)我做到了