使用for循环动作脚本3添加影片剪辑

时间:2013-05-02 18:55:33

标签: actionscript-3

嘿嘿想知道是否有人可以帮助我,我想添加一大堆移动剪辑并让它们可以点击到动作脚本3中的舞台,我可以计算出它们之间的间距我只是在尝试时遇到错误使用它添加它们:

for(var x:int = 1; x <= 10; x++)
        {

            var this["cardPrint"+x] :MovieClip = new this["card_"+x]();
            this.addChild(this["cardPrint"+x]);
            this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]);

        }

正确方向上的一点会有所帮助 谢谢

1 个答案:

答案 0 :(得分:0)

this是指示当前类的范围指示符。所以this["cardPrint"+x]实际上是在尝试查找具有该名称的变量,但是您不能声明已经是引用的变量。

做你想做的事的唯一方法就是这样:

public dynamic class Foobar 
{
    public function Foobar() 
    {
        for(var x:int = 1; x <= 10; x++)
        {
            this["cardPrint"+x] = new this["card_"+x]();
            this.addChild(this["cardPrint"+x]);
            this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]);
        }
    }
}

关键是制作课程dynamic。这允许您在运行时创建变量名称,并使用scope["varName"]语法以字符串形式创建它们。如果您在Flash Pro的时间轴上执行此操作,因为我感觉到您的感觉,这根本不可能以您想要的方式实现。你最好在循环中创建对象并将它们存储在数组中以便以这种方式访问​​它们,而不是使用上述语法。

创建的每个对象的数据类型与实例化的对象相同,因此您将无法将其设置为MovieClip或类似。

"card_"+x也需要是一个可实例化的对象(Class)。如果不是,则无法实例化它并且总是会出错。

我想提醒你,这是一种非常糟糕的方式。错误的空间非常大,使用这种语法很难做到,而且难以在代码中阅读。