【问题标题】:Undefined MovieClip array, for some reason (Actionscript 3.0)出于某种原因,未定义的 MovieClip 数组 (Actionscript 3.0)
【发布时间】:2012-01-19 23:08:14
【问题描述】:

我只是想玩一种“二消”游戏。我刚开始做,因为我是初学者,所以我想了解数组是如何工作的。因此我编写了这个简单的程序:

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() 对其进行更正,但效果不佳。有人可以帮我吗?

【问题讨论】:

    标签: arrays actionscript properties undefined movieclip


    【解决方案1】:

    这个

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

    是不正确的代码。您应该在变量声明或任何方法中初始化实例属性(在您的情况下为数组)。可以在静态块中初始化 static 属性。我认为这个关于静态块初始化的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 );
        }
    }
    

    【讨论】:

    • 非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多