as3通过动态添加的动画片段访问儿童

时间:2013-05-02 21:12:19

标签: actionscript-3 class loops dynamic children

我正在添加moiveClips并相应地放置它们的位置。我将所有动态添加的剪辑放在一个新的影片剪辑中,然后将其置于舞台上。作为测试,我看到我可以控制主容器中的alpha但我无法访问孩子。我如何分别评估每个flagButton?在下面的循环示例中会有几个。

var flagButton:MovieClip;
var flagArray:Array = new Array;
var flagDisplayButtons:MovieClip = new MovieClip();
function displayFlagButtons()
{




for( var i = 0; flagArray.length > i; i++)
{
    var flagButton:MovieClip = new roundButton();
    flagButton.x = (flagButton.width + 10) * i;
    flagButton.y = stage.stageHeight - flagButton.height;
    addChild(flagButton);

    flagDisplayButtons.addChild(flagButton);
}
addChild(flagDisplayButtons);

// Works
flagDisplayButtons.x = stage.stageWidth/2 - flagDisplayButtons.width/2;

// Does not see flagButton
flagDisplayButtons.flagButton.alpha = .5;
}

GETS错误: TypeError:错误#1010:术语未定义且没有属性。

2 个答案:

答案 0 :(得分:1)

您需要使用getChildAtgetChildByName来获取DisplayObjectContainer的孩子

IE:

flagDisplayButtons.getChildAt(0).alpha = 0.5;

答案 1 :(得分:1)

在您的示例代码中,您创建了一组按钮实例,并逐个将它们添加到flagDisplayButtons的显示列表中。它们按照您放置的顺序显示在该显示列表中。

第一个实例位于索引0

第二个实例位于索引1

第三个实例是索引2

等等。

因此,如果您想要访问添加的第三个按钮,可以执行以下操作:

var flagButton:RoundButton = flagDisplayButtons.getChildAt(2) as RoundButton;

现在您已创建引用该按钮的变量,您可以执行以下任何操作:

flagButton.alpha = .5;
flagButton.x = 100;
flagButton.y = 200;