ActionScript 3 - 公共静态常量 - 我希望它是动态的!

时间:2011-04-13 22:04:19

标签: actionscript-3

我正在使用purePDF(AS3的PDF库)来设置一些报告。我想使用相同的代码来加载动态数量的标头和相应的数据列。但我在这方面有一点代码:

public static const COLUMNWIDTHS: Vector.<Number> = Vector.<Number>( [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3] );

我曾尝试使用这个COLUMNWIDTHS问题,但似乎图书馆希望将其设置为公共静态const - 我不能用它的方式 - 公共变量。我涉足AS3很多,但在我开始修改项目代码之前没有遇到过这个问题。

如何解决此问题?

3 个答案:

答案 0 :(得分:5)

我不完全确定我理解你的问题。但看起来您想要动态更改COLUMNWIDTHS,但它也必须是static const

如果这是问题,你可以修复它,声明你的Vector这样:

public static const COLUMNWIDTHS: Vector.<Number> = new Vector.<Number>();

然后,更新其内容,例如:

        for (var i:int = 0; i < 10; i++) {
            COLUMNWIDTHS[i] = 3;
        }

虽然起初看起来有点违反直觉,但COLUMNWIDTHS被声明为const的事实并不意味着您无法更改对象的内容。它只是意味着引用是常量。它指向一个对象,你不能指向另一个对象。也就是说,您无法重新分配COLUMNWIDTHS,但您肯定可以更改其内容。

答案 1 :(得分:2)

我只需要研究同样的问题。这是我能够提出的最佳答案:

public static const COLUMNWIDTHS: Vector.<Number> = new <Number>[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3];

至少在Flash 10中有效。

答案 2 :(得分:1)

好的,人们,你在这个问题上的思考太过分了。答案很简单,我在发布后大约5分钟就结束了我自己的计算,但是在我测试解决方案之后我的计算机崩溃了(代码没有错误 - 我的愚蠢笔记本电脑因为过热而偶尔会这样做一次i3核心[即将推出另一台笔记本电脑])。

提升系统 - 你是对的 - 以下内容:

public static const COLUMNWIDTHS: Vector.<Number> 

需要:

public static var COLUMNWIDTHS: Vector.<Number> 

非常简单的解决方案!