use*_*257 4 class actionscript-3
我需要一点帮助来理解类在ActionScript 3中是如何工作的.我理解你从"package"开始,为什么然后去导入任何必要的库,然后命名类并声明它是公共/私有还是扩展了什么.
之后是我不明白的.看来你写的是"(公共)函数类名()
我不明白你为什么这样做以及大括号中的内容.
我可能已经错过了一些早期的阅读,因为我做了一点阅读,但我似乎无法得到它.
有人可以尝试向我解释一下吗?谢谢.
Mar*_*rty 12
该package声明.
好的,首先就像你提到的那样,一个类必须用package1包裹.这为我们提供了第一个块,您需要在其中定义类.
package
{
// Your class here.
}
Run Code Online (Sandbox Code Playgroud)
该package陈述反映了该班级相对于.fla2的位置.例如,如果在项目.fla所在的目录中有一个文件夹"classes",那么该文件夹中的类将需要一个反映出:
package classes
{
// Your class here.
}
Run Code Online (Sandbox Code Playgroud)
定义班级.
在包语句中,您可以插入一个类.不要将它与包本身混淆,包本身可以包含许多类 - 每个类只需要拥有自己的文件和相同的包语句.
类定义由最多5个部分组成:
internal或public.一个internal类只能被同一个包中的类可以看到,而public类可以从任何地方的项目中可以看出.如果你想在包中创建一个名为"Person"的类classes,那么我们最终会得到:
package classes
{
public class Person
{
// Class qualities here.
}
}
Run Code Online (Sandbox Code Playgroud)
属性.
类可以包含属性.使用var关键字定义属性.它们可能属于许多名称空间(包括您自己的名称空间)之一,用于保存属于您的类的值.最常见的属性集中在类的顶部.
我们的Person类可以享受的属性height和weight:
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
}
}
Run Code Online (Sandbox Code Playgroud)
可以通过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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
方法.
方法用于保存在调用该方法时可以运行的逻辑.方法通常返回值并可以接受参数.方法可以属于您期望属性可以属于的任何命名空间.
我们可能希望能够轻松确定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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
实例.
现在我们已经定义了新类,我们可以使用new关键字创建此类的实例.这可以从可以访问Person类的任何地方完成,在这种情况下,这是在项目的任何地方,因为我们已经创建了类public.
虽然类是public,但是从它所属的包之外的任何地方访问它都需要使用import语句.此语句需要在属于不同包的任何类中使用.该import语句遵循与之相同的名称,package并包括要包含在最后的类的名称:
import classes.Person;
Run Code Online (Sandbox Code Playgroud)
导入后Person,可以创建它的实例并将它们分配给具有不同height和weight值的变量:
var marty:Person = new Person(71, 1.76);
var bruce:Person = new Person(96.4, 1.72);
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用他们的getBMI()方法获得每个人的BMI :
trace(marty.getBMI()); // 22.9
trace(bruce.getBMI()); // 32.6
Run Code Online (Sandbox Code Playgroud)
1您可以将类放在可以在同一.as文件中引用的包之外.
2您可以添加更多源路径,并且包可以相对于此.