flash as3 点击事件

stop();
index.Home.addEventListener(MouseEvent.CLICK, clickBtn);
function clickBtn(e:MouseEvent):void
{
gotoAndPlay(2);
}
index是主场景里的一个元件 .Home是index里的一个元件 但错误提示
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at _fla::MainTimeline/frame1()

为什么会这样呢

根据“at _fla::MainTimeline/frame1()”

 

可知,代码是放在主时轴上的第一帧(即主场景第一帧)

 

由于各种问题(什么问题不清楚)在stage加载完成后,你的flash并没有加载完成,包括你的元件index并没有完全加载,所以会报index空值错误(或者Home不存在,也会报错)

 

在确认到Home存后在(肉眼判断),在访问flash内容元件时,先等待flash加载完成,即在开始时,添加flash自身加载完成的事件,来检测完成加载后,再来进行所有功能的入口。

 

代码如下:

this.loaderInfo.addEventListener(Event.COMPLETE,completeFun);//添加事件,倾听加载完成
//加载完成事件接收函数
function completeFun(e:Event):void{
 this.loaderInfo.removeEventListener(Event.COMPLETE,completeFun);//将事件删除,释放空间
 //这里开始你的初始化等等操作,到这里,在flash中存在的元件都可以访问了
 stop();
 index.Home.addEventListener(MouseEvent.CLICK, clickBtn);
}
function clickBtn(e:MouseEvent):void{ 
 gotoAndPlay(2);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-29
root["index"]["Home"]
or
root["index"].Home
---------------------
你的代码没写在场景帧上
元件名字跟代码的不一致
看错误提示 应该是: 目前index里面没有Home
第2个回答  2013-09-28
gotoAndPlay(2);改为》e.target.gotoAndPlay(2);追问

可是我是要让它跳到主舞台的第二帧 不是home的第二帧

追答

那就MovieClip(root).gotoAndPlay(2); as3已经没有_root这种写法了,最高的容器是stage,然后里面放各种object,应该说stage也是object。你肯定是写在桢上的代码,已经不建议了,最好文档类,修改维护起来方便。

相似回答