【发布时间】:2014-10-04 04:40:00
【问题描述】:
在剖析我在 Flash Pro CS6 中给出的一些 AS3 代码时,我注意到其中一个类从未被声明或实例化,但它被访问了,并且与它的 import 语句同名。示例:
import records; //package file records.as
//Import instantiates records and it is usable!
records.zip = "12345";
trace (records.Zip, " ", records.Name); //this works
//I thought this was always necessary
var r : records = new records();
r.init_records();
我注意到这个变量“记录”在其他几个导入的类中被大量访问,所以我想知道这是一种好的做法,还是容易出错?如果您知道一个,您可以向我指出描述此“功能”的资源。我知道如果我想保留名为“records”的类并将其作为变量“records”访问,Flash 绝不会让我声明以下内容:
var records : records = new records();
这对我来说似乎很奇怪,我想确保代码在我进一步开发时是健壮的。
最后,在系统的后期,以下代码似乎用于重置“记录”变量:
import records; //package file records.as
var new_records : records = new records();
new_records.init_records();
再次导入 records.as 会重置这个自动实例化的变量吗?或者将在新实例上声明和调用 init_records()(在此之后从未引用过,它会返回引用“记录”)来重置默认实例化?
【问题讨论】:
-
您能帮我更好地理解您的问题吗?您是在问应该使用单例类、静态类还是普通类?导入一个类不会重新实例化该类,它只允许脚本/框架访问该类。
-
显然,经过更多研究,这是一种在整个代码中创建和使用全局变量的方法。您导入 .as 文件(从技术上讲,您甚至不必使用 import 语句,只需将其包含在您的编译列表中)并通过类本身的名称来引用类内容。我想弄清楚的是(1)再次导入类是否运行构造函数,从而修改所有现有的全局变量,以及(2)创建类的第一个真实实例是否对全局变量版本有任何影响班上的?
标签: actionscript-3 flash