如何在不为每个对象写一行的情况下访问 AS3 中的更多对象?
How do I access more objects in AS3 without writing a line for each of them?
假设我在 Flash 中有 5 个对象,我想更改它们的一些属性;它们的名称是 thing1、thing2 等等。当我有 3 或 4 个 MovieClip 时,这很容易,因为我只需为每个 MovieClip 写一行,但有时会涉及几百个对象。
thing1.alpha = 0.5;
thing2.alpha = 0.5;
thing3.alpha = 0.5;
thing4.alpha = 0.5;
而不是这个,我想要这样的东西:
var nr: int;
for (nr = 1; nr <= 4; nr++){
MovieClip(String("thing" + String(nr))).alpha = 0.5;
}
我知道那行不通,但有什么办法可以用有用的东西代替 "String" 吗?
(我不想添加 Childs)
数组s 和循环就是答案。
您可以先列出所有对象,然后通过数组访问它们:
var aList:Array = [thing1, thing2, thing3, thing4];
var aThing:DisplayObject;
for each (aThing in aList)
{
aThing.alpha = 0.5;
}
如果您知道如何构造它们的名称,您就可以访问容器中的对象:
for (var i:int = 1; i <= 4; i++)
{
var aName:String = "thing" + i;
var aThing:DisplayObject = getChildByName(aName);
aThing.alpha = 0.5;
}
UDP: 通常我不鼓励这样做,因为某些影响(而且我仍然认为坚持提前列出或使用 getChildByName(。 ..) 是按顺序排列的更可靠的方法),但是,无论如何。您还可以通过方括号表示法处理嵌套对象,但这仅适用于:
- 最初设计的对象 File > Publish Settings > AS3 Settings > Auto-declare Stage Instances 设置为 ON(它是 ON 默认情况下,但无论如何知道这一点是很好的);
- 在 运行 时间内添加的对象,您明确指定为给定容器的成员,其名称与对象自身的实例名称相同。
此外,我真的建议您阅读我的 ,它详细突出了地址主题。
for (var i:int = 1; i <= 4; i++)
{
var aName:String = "thing" + i;
var aThing:MovieClip = this[aName];
aThing.alpha = 0.5;
}
假设我在 Flash 中有 5 个对象,我想更改它们的一些属性;它们的名称是 thing1、thing2 等等。当我有 3 或 4 个 MovieClip 时,这很容易,因为我只需为每个 MovieClip 写一行,但有时会涉及几百个对象。
thing1.alpha = 0.5;
thing2.alpha = 0.5;
thing3.alpha = 0.5;
thing4.alpha = 0.5;
而不是这个,我想要这样的东西:
var nr: int;
for (nr = 1; nr <= 4; nr++){
MovieClip(String("thing" + String(nr))).alpha = 0.5;
}
我知道那行不通,但有什么办法可以用有用的东西代替 "String" 吗?
(我不想添加 Childs)
数组s 和循环就是答案。
您可以先列出所有对象,然后通过数组访问它们:
var aList:Array = [thing1, thing2, thing3, thing4];
var aThing:DisplayObject;
for each (aThing in aList)
{
aThing.alpha = 0.5;
}
如果您知道如何构造它们的名称,您就可以访问容器中的对象:
for (var i:int = 1; i <= 4; i++)
{
var aName:String = "thing" + i;
var aThing:DisplayObject = getChildByName(aName);
aThing.alpha = 0.5;
}
UDP: 通常我不鼓励这样做,因为某些影响(而且我仍然认为坚持提前列出或使用 getChildByName(。 ..) 是按顺序排列的更可靠的方法),但是,无论如何。您还可以通过方括号表示法处理嵌套对象,但这仅适用于:
- 最初设计的对象 File > Publish Settings > AS3 Settings > Auto-declare Stage Instances 设置为 ON(它是 ON 默认情况下,但无论如何知道这一点是很好的);
- 在 运行 时间内添加的对象,您明确指定为给定容器的成员,其名称与对象自身的实例名称相同。
此外,我真的建议您阅读我的
for (var i:int = 1; i <= 4; i++)
{
var aName:String = "thing" + i;
var aThing:MovieClip = this[aName];
aThing.alpha = 0.5;
}