我正在使用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很多,但在我开始修改项目代码之前没有遇到过这个问题。
如何解决此问题?
答案 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>
非常简单的解决方案!