Actionscript错误#1009无法访问空对象引用的属性或方法

时间:2016-01-05 06:03:07

标签: actionscript-3 flash

我只是一个初学者,我真的很感激一些帮助。 这是我的代码:

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

var currentButton:MovieClip
button1.addEventListener(MouseEvent.CLICK, mouseClick);
button2.addEventListener(MouseEvent.CLICK, mouseClick);
button3.addEventListener(MouseEvent.CLICK, mouseClick);
button4.addEventListener(MouseEvent.CLICK, mouseClick);
function mouseClick(event:MouseEvent):void {
    currentButton.alpha = 1;
    currentButton.mouseEnabled = true;
    currentButton = event.target as MovieClip;
    trace("CLICK");
    currentButton.alpha = 0.7;
    currentButton.mouseEnabled = false;
}

但是当我点击按钮时出现此错误:

  

TypeError:错误#1009:无法访问空对象引用的属性或方法。           在Untitled_fla :: MainTimeline / mouseClick()

2 个答案:

答案 0 :(得分:0)

您的代码似乎与currentButton对象存在问题。

我想在mouseClick函数的开头添加以下行可以解决您的问题:

function mouseClick(event:MouseEvent):void {
    var currentButton:MovieClip = event.currentTarget; // Giving proper type to an object is better practise, but since your button objects appear unknown, I have assumed them as MovieClip
    currentButton.alpha = 1;
...

答案 1 :(得分:0)

我不会在@ kiran的回答中添加很多东西,但我会尝试解释你为什么会遇到这个错误。

如果你调试代码,你就会发现错误是由这一行触发的:

currentButton.alpha = 1;

因为您只是创建了currentButton对象(var currentButton:MovieClip),但尚未对其进行初始化,因此它仍然是null

为了避免这种情况,您只需要在使用它之前初始化对象(在开始时(您只能为已使用的函数创建它,而不是全局),例如:

var currentButton:MovieClip = new MovieClip();

或(在函数内部)

var currentButton:MovieClip = event.target as MovieClip;

或者对于您当前的代码,您只需颠倒mouseClick()函数说明的顺序:

function mouseClick(event:MouseEvent):void 
{
    currentButton = event.target as MovieClip;

    // you can then use "currentButton"

}

希望可以提供帮助。