尽管这是不错的做法,但我读到here你可以拥有包变量(或常量),所以我尝试了这个:
// globals.as
package global
{
public const someConst:String = 'theValueOfTheConst';
public var someVar:String = 'theValueOfTheVar';
}
// SomeClass.as
package pack.to.the.class
{
// ...
import global.*;
// ...
// ...
public function aFunction():void
{
trace(someConst);
trace(someVar);
}
// ...
}
我所拥有的只是一个编译时错误,上面写着“全局的定义:找不到someConst”(对于someVar也是如此)
我正在使用Flex,我在问题中看到了这一点。那么,这可能吗?我可以使用包变量(或常量)而不使用类吗?
谢谢!
PS:包名,变量名和函数名都是一个例子,我测试时使用其他名称。
答案 0 :(得分:3)
答案很简单。您可能只在文件中有一个定义。将它们分成两个文件然后就可以了。
您的文件必须与变量完全相同。所以在你的例子中,这将起作用:
//someConst.as
package global
{
public const someConst:String = 'theValueOfTheConst';
}
//someVar.as
package global
{
public var someVar:String = 'theValueOfTheVar';
}
每个“编译单元”(* .as文件的花哨术语)可能只有一个可见的定义。您也不能将两个类放入同一个文件中。但是,您可以拥有任意数量的匿名定义。
答案 1 :(得分:1)
如果你改变了
public const someConst:String = 'theValueOfTheConst';
到
public static const someConst:String = 'theValueOfTheConst';
然后它对我有用。 YMMV。
答案 2 :(得分:0)
我对此表示严重怀疑......如果可以的话,我会怀疑它不仅仅是制作一个全球级别的工作。
答案 3 :(得分:0)
对于它的价值,我尝试自己测试它,也无法让它工作,即使变量和对它们的引用都在同一个包中。
答案 4 :(得分:0)
当然可能,但气馁。在源/ root(编译器设置中的主源文件夹)中放入全局类:
包 {
public const someConst:String = 'theValueOfTheConst';
}
(哦......我正在使用flex进行测试,但她工作 - 无需导入以在不同的软件包区域设置中获取someConst)