所以我在我的库中添加了一个电影剪辑,它包含了更多的组件,我已经能够使用以下命令获得有关这些组件的信息:
try
{
for (i = 0; i < musicControls.numChildren; i++){
trace ('\t|\t ' +i+'.\t name:' + musicControls.getChildAt(i).name + '\t type:' + typeof ( musicControls.getChildAt(i))+ '\t' + musicControls.getChildAt(i));
}
}
catch (error:Error)
{
trace("Failed:", error.message);
}上面的脚本返回下面的信息。我想问一下,现在有没有办法通过索引来访问这些孩子。例如,电影剪辑中的一个组件是进度条,我如何引用它?我试过使用getChildByName,但它不起作用,在寻求帮助时,每个人都说使用它很慢。我很抱歉,如果这是一个基本问题,我不是很擅长as3。
| 0. name:plyControl type:object [object Button]
| 1. name:stopControl type:object [object Button]
| 2. name:nextControl type:object [object Button]
| 3. name:prevControl type:object [object Button]
| 4. name:progressControl type:object [object ProgressBar]
| 5. name:volControl type:object [object Slider]
| 6. name:__id11_ type:object [object MovieClip]
| 7. name:__id12_ type:object [object TLFTextField]
| 8. name:instance71 type:object [object MovieClip]
| 9. name:vizControl type:object [object ComboBox]
| 10. name:__id13_ type:object [object MovieClip]
| 11. name:__id14_ type:object [object TLFTextField]
| 12. name:instance74 type:object [object MovieClip]
| 13. name:__id15_ type:object [object MovieClip]
| 14. name:timeControl type:object [object TLFTextField]
| 15. name:instance75 type:object [object MovieClip]编辑:或者非常擅长语法和拼写,从外观上看...
发布于 2012-05-04 00:58:54
下面的代码不能工作吗?
var progressBar:ProgressBar = musicControls.getChildByName("progressControl") as ProgressBar;
if(progressBar)
// doStuff你说getChildByName不工作,你得到了什么错误信息?
发布于 2012-05-04 01:11:30
您正在朝着正确的方向前进,并且实际上已经通过您的演示证明了您可以做到。在舞台上从库资源实例化的任何对象都将始终具有相同的索引结构(毕竟它基本上是原始对象的代理)。因此,如果您知道您的进度条在哪个层上,您的引用将如下所示:
myPointer = musicControls.getChildAt(4);
如果你想通过索引获取一个孩子的孩子,你可以这样做:
musicControls.getChildAt(4).getChildAt(0);
您可以在dot.notation语法中混合和匹配您的操作,因为(在每一步)代码都会从函数调用解析到它返回的对象中。
this.getChildByName("musicControls").progressControl.getChildAt(0)
我希望这能澄清一些事情。
https://stackoverflow.com/questions/10434253
复制相似问题