AS3 动态变量命名
AS3 Dynamic variable naming
在 ActionScript 3 中可以这样命名动态变量吗?
for (var xz=0;xz<10;xz++){
var this['name' + xz]:Number = xz;
}
是的,它确实是 - AS3 来自 ECMA 脚本,所以这是为对象设置 属性(在本例中为 this
)。所以你可以动态设置属性。但是你对如何做有点不对 - 没有必要使用var
,因为你没有声明它,你设置它。这就像使用:
this.propertyName = 'value';
从现在开始,this
将 propertyName
等于 'value
'。因此你应该只使用:
this['name' + xz] = xz;
就这些了!
编辑:如 BotMaster 所述 - 如果您正在使用 classes 并且您想要动态添加属性,则必须将 class 设置为动态。大多数常用的已经是动态的(正如 Aaron 提到的 :))。
我没有详细介绍,因为我认为您只需要在您的时间表上执行此操作即可。如果不是 - 请在您的问题中指定这一点,以便您可以获得比这个更准确的答案。如果您的新 属性 需要输入(想不出任何要点)也是如此 - 您应该看到 BotMaster 的回答:)
简短的回答是:不,您不能在运行时声明类型化属性。
长答案是:有点。
如果您想创建新类型的属性,您必须将它们存储在 Vector<> 中。
除未类型化、动态 class、存储在对象中、存储在数组中等之外,任何其他方式都可以让您这样做...
您应该为这种变量列表使用数组。
虽然您可以动态创建属性,但您通常希望避免它。特别是在您的情况下,每个变量的实际标识符不是 String
,而是一个数字。那么,为什么不使用完全可以做到这一点的东西:用数字标识它的元素呢?这正是数组的作用。
代码示例:
var xzs:Array = [];
for (var xz:uint = 0; xz < 10; xz++){
xzs.push(xz);
}
在 ActionScript 3 中可以这样命名动态变量吗?
for (var xz=0;xz<10;xz++){
var this['name' + xz]:Number = xz;
}
是的,它确实是 - AS3 来自 ECMA 脚本,所以这是为对象设置 属性(在本例中为 this
)。所以你可以动态设置属性。但是你对如何做有点不对 - 没有必要使用var
,因为你没有声明它,你设置它。这就像使用:
this.propertyName = 'value';
从现在开始,this
将 propertyName
等于 'value
'。因此你应该只使用:
this['name' + xz] = xz;
就这些了!
编辑:如 BotMaster 所述 - 如果您正在使用 classes 并且您想要动态添加属性,则必须将 class 设置为动态。大多数常用的已经是动态的(正如 Aaron 提到的 :))。 我没有详细介绍,因为我认为您只需要在您的时间表上执行此操作即可。如果不是 - 请在您的问题中指定这一点,以便您可以获得比这个更准确的答案。如果您的新 属性 需要输入(想不出任何要点)也是如此 - 您应该看到 BotMaster 的回答:)
简短的回答是:不,您不能在运行时声明类型化属性。
长答案是:有点。
如果您想创建新类型的属性,您必须将它们存储在 Vector<> 中。
除未类型化、动态 class、存储在对象中、存储在数组中等之外,任何其他方式都可以让您这样做...
您应该为这种变量列表使用数组。
虽然您可以动态创建属性,但您通常希望避免它。特别是在您的情况下,每个变量的实际标识符不是 String
,而是一个数字。那么,为什么不使用完全可以做到这一点的东西:用数字标识它的元素呢?这正是数组的作用。
代码示例:
var xzs:Array = [];
for (var xz:uint = 0; xz < 10; xz++){
xzs.push(xz);
}