0

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

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

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。

如果你能帮忙,请告诉我。

谢谢你。

伊莱

4

2 回答 2

1

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

mc = this["P" + i];

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

mc = myComponent["P" + i];
于 2012-04-19T17:59:32.330 回答
1

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

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

这应该可以工作 -* 但是 *- 这是相对较慢且不是好的做法。最好将这些 MovieClip 动态添加到舞台(在代码中,而不是拖动到舞台),这样您就已经有了对它们的引用。

于 2012-04-19T17:57:55.653 回答