AS3 - 可能有包变量(或常量)

时间:2009-12-11 17:30:50

标签: flex actionscript-3

尽管这是不错的做法,但我读到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:包名,变量名和函数名都是一个例子,我测试时使用其他名称。

5 个答案:

答案 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)