0

所以我在我的库中提供了一个movieclip,我已将其添加到舞台中,它包含更多组件,我能够使用以下方法获取有关这些组件的信息:

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);
}

上面的脚本返回了下面的信息。我想问现在有没有办法通过索引访问这些孩子。例如,movieclip 中的组件之一是进度条我将如何引用它?我尝试使用 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]

编辑:或者看起来非常擅长语法和拼写....

4

2 回答 2

2

以下代码不起作用吗?

var progressBar:ProgressBar = musicControls.getChildByName("progressControl") as ProgressBar;
if(progressBar)
    //  doStuff

您说 getChildByName 不起作用您收到什么错误消息?

于 2012-05-03T16:58:53.843 回答
1

您正朝着正确的方向前进,并且实际上已经通过您的演示证明了您可以。从库资产在舞台上实例化的任何对象都将始终具有相同的索引结构(毕竟它基本上是原始对象的代理)。因此,如果您知道进度条在哪一层,您的参考将如下所示:

myPointer = musicControls.getChildAt(4);

如果您想通过索引获取孩子的孩子,您可以这样做:

musicControls.getChildAt(4).getChildAt(0);

您可以在 dot.notation 语法中混合和匹配您的操作,因为(在每一步)代码都是从函数调用解析到它返回的对象中。

this.getChildByName("musicControls").progressControl.getChildAt(0)

我希望这能澄清事情。

于 2012-05-03T17:11:29.623 回答