我只是想做一个"match-2“游戏。我刚刚开始这样做,因为我是一个初学者,我正在尝试了解数组是如何工作的。因此,我编写了这个简单的程序:
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;
}
}}
但是,在声明数组并尝试将MovieClips (已经在舞台上,实例名为A、B、C)放入其中之后,我得到了一个“未定义的属性”错误。我尝试过使用Ar.push()来纠正它,但它不能很好地工作。有人能帮我吗?
发布于 2012-01-20 17:33:17
这
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 );
}
}https://stackoverflow.com/questions/8934721
复制相似问题