我只是想尝试做一些“匹配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()来纠正它,但它不起作用。有人能帮助我吗?
答案 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 );
}
}