我只是一个初学者,我真的很感激一些帮助。 这是我的代码:
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()
答案 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"
}
希望可以提供帮助。