0

嘿,想知道是否有人可以帮助我,我正在尝试添加大量移动剪辑并使它们可点击到动作脚本 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]);

        }

朝着正确的方向前进会很有帮助,谢谢

4

1 回答 1

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还需要是一个可实例化的对象(a Class)。如果不是,则无法实例化它,它总是会出错。

我确实想提醒您,这是一种非常糟糕的组合方式。错误的空间非常大,使用这种语法将很难做到,也很难在代码中阅读。

于 2013-05-02T19:05:29.847 回答