我希望在ActionScript静态初始化程序中初始化两个静态ArrayList
对象。
我写了这段代码:
import mx.collections.ArrayList;
public class Problem{
[Bindable] private static var levelNumbers:ArrayList;
[Bindable] private static var speedNumbers:ArrayList;
{
for (var loopInt:int = 1; loopInt<901; loopInt++){
levelNumbers.addItem(loopInt);
speedNumbers.addItem(loopInt);
}
}
//...
}
但代码无法编译。我在for
循环的三行中得到了这个错误:
1120 : Access of undefined property loopInt
为什么会这样?我像往常一样定义变量!
答案 0 :(得分:4)
问题实际上是代码中的本地loopInt
变量。使用静态inialisers时,不能使用this
,类的名称或局部变量。前两个可能是因为课程还没有完全存在,而最后一个,我不确定(也许没有范围?)。
要使其工作,请将循环提取到函数中。像这样:
{
_init();
}
private static function _init():void
{
for (var loopInt:int = 1; loopInt<901; loopInt++){
levelNumbers.addItem(loopInt);
speedNumbers.addItem(loopInt);
}
}
它应该有效
答案 1 :(得分:-1)
这是因为Flex中没有ArrayList。你的意思是ArrayCollection。这个代码应该可以正常工作。
公共课问题{
[Bindable] private static var levelNumbers:ArrayCollection;
[Bindable] private static var speedNumbers:ArrayCollection;
{trace(“1”+ getTimer());
for(var loopInt:int = 1; loopInt&lt; 901; loopInt ++){
levelNumbers.addItem(loopInt);
speedNumbers.addItem(loopInt); }
trace(“2”+ getTimer()+“\ n \ n”); } // ...}