未定义的MovieClip数组,由于某种原因(Actionscript 3.0)

时间:2012-01-19 23:08:14

标签: arrays actionscript properties undefined movieclip

我只是想尝试做一些“匹配2”游戏。我刚刚开始这样做,因为我是初学者,我试图理解Arrays是如何工作的。因此我写了这个简单的程序:

package  {

import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip
{
    var Ar:Array = [];
    Ar[0] = A;
    Ar[1] = B;
    Ar[2] = C;

    public function Main()
    {
        for( var i = 0; i < 3;  i++ )
        {
            Ar.buttonMode = true;
            Ar[i].addEventListener( MouseEvent.MOUSE_OVER, MouseOverAct );
            Ar[i].addEventListener( MouseEvent.MOUSE_OUT, MouseOutAct );
        }
    }

    public function MouseOverAct( mouseEvent:MouseEvent ):void
    {
        mouseEvent.target.alpha = 0.1;
    }

    public function MouseOutAct( mouseEvent:MouseEvent ):void
    {
        mouseEvent.target.alpha = 1.0;
    }
}

}

然而,在声明数组并尝试将MovieClip(已经在舞台上,实例名称为A,B,C)放入其中后,我收到“未定义属性”错误。我试图使用Ar.push()来纠正它,但它不起作用。有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

var Ar:Array = [];
Ar[0] = A;
Ar[1] = B;
Ar[2] = C;

是错误的代码。您应该在变量声明或任何方法初始化实例属性(在您的情况下是数组)。可以在静态块中初始化静态主题。我认为关于静态块初始化的这个link会对你有所帮助。所以你应该这样做:

public var _array:Array = [A, B, C];

public var _array:Array;

public function Main()
{
    _array = [A, B, C];
    for( var i = 0; i < 3;  i++ )
    {
        _array.buttonMode = true;
        _array[i].addEventListener( MouseEvent.MOUSE_OVER, mouseOverHandler );
        _array[i].addEventListener( MouseEvent.MOUSE_OUT, mouseOutHandler );
    }
}