AS3:循环播放MovieClip名称

时间:2012-04-19 17:48:32

标签: actionscript-3 flash loops

我试图创建一个循环,它将通过影片剪辑名称,允许您附加图像。

到目前为止,这是我的代码:

private var mc:MovieClip;
private var instance:String;

public function showFriends(e:Event)
{
    var str:String = e.target.data;
    var num:uint;
    var i:Number;
    var rex:RegExp = /[\s\r\n]*/gim;
    var friends_array:Array = [];

    num = friends_array.length;
    friends_array = str.split(',');

       for(i=0; i<num; i++){
           var fri_id = friends_array[i].replace(rex,'');

           mc = "P"+i; // THIS IS THE PROBLEM LINE

           instance = 'DP';// Sets the Instance Name
           load_DP(fri_id);
       }
}

我试图找出如何将循环中的数字(var i)添加到MovieClip的名称。

目前此代码无法发出错误:

  

将String类型的值隐式强制转换为不相关的类型   flash.display使用:MovieClip的

我已经解决了它意味着它使用字符串名称作为MC而因此不起作用。

如果我也改变它:

mc = P1; // with no quotes

这有效,但显然只使用一个MC。

如果你能提供帮助,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:1)

查看DisplayObjectContainer的getChildByName方法。如果showFriends在您的Document类中,那么它应该作为\

mc = this.getChildByName("P" + i);

这应该有效 - *但是* - 这是相对缓慢而且不是很好的做法。最好将这些MovieClip动态地添加到舞台上(在代码中,而不是拖到舞台上),这样你就已经有了对它们的引用。

答案 1 :(得分:1)

如果您尝试访问的所有MovieClip实例都是当前组件的子项,则可以使用以下表示法。

mc = this["P" + i];

如果他们都是其他组件的孩子,您也可以将其作为...

访问
mc = myComponent["P" + i];