使用Actionscript构建Flash网站导航系统的问题3

时间:2011-12-16 16:26:09

标签: flash actionscript-3 flash-cs5

我正在尝试使用Actionscript 3.0为我在Flash中创建的网站创建功能导航栏。当我去运行.swf文件时,我可以从“Home”转到“About”就好了,但是它不会让我从About框架回到Home。我假设是由于这个编译器错误不断出现:

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

以下是我在时间轴中设置每个页面的方式:

(时间线的Screencap) https://lh5.googleusercontent.com/-2HFs2WIAohc/TutwoDIE0sI/AAAAAAAAAW4/t1oBnXgQLJE/s594/timeline.png

这是我到目前为止编写的Actionscript:

stop();
btnHome.addEventListener (MouseEvent.CLICK, showHome)
function showHome (e:MouseEvent) {
    this.gotoAndStop("home");
}
btnAbout.addEventListener (MouseEvent.CLICK, showAbout)
function showAbout (e:MouseEvent) {
    this.gotoAndStop("about");
}

btnGallery.addEventListener (MouseEvent.CLICK, showGallery)
function showGallery (e:MouseEvent) {
    this.gotoAndStop("gallery");
}

btnMenu.addEventListener (MouseEvent.CLICK, showMenu)
function showMenu (e:MouseEvent) {
    this.gotoAndStop("menu");
}

btnContact.addEventListener (MouseEvent.CLICK, showContact)
function showContact (e:MouseEvent) {
    this.gotoAndStop("contact");
}


btnHome2.addEventListener (MouseEvent.CLICK, showHome2)
function showHome2 (e:MouseEvent) {
    this.gotoAndStop("home");
}
btnAbout2.addEventListener (MouseEvent.CLICK, showAbout2)
function showAbout2 (e:MouseEvent) {
    this.gotoAndStop("about");
}

btnGallery2.addEventListener (MouseEvent.CLICK, showGallery2)
function showGallery2 (e:MouseEvent) {
    this.gotoAndStop(30);
}

btnMenu2.addEventListener (MouseEvent.CLICK, showMenu2)
function showMenu2 (e:MouseEvent) {
    this.gotoAndStop("menu");
}

btnContact2.addEventListener (MouseEvent.CLICK, showContact2)
function showContact2 (e:MouseEvent) {
    this.gotoAndStop("contact");
}

btnHome2,btnAbout2等是我在关于框架(开始第20帧)上给出按钮的所有实例名称。

有人可以告诉我为什么我会收到此错误以及为什么我的导航按钮不会像普通导航系统那样来回往返每个“页面”?

我在Google上查了这个错误,但在我的情况下似乎没有意义。主时间轴上的第1帧明确命名 - 如果它不起作用?

非常感谢帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您的程序会抛出错误,因为您的脚本位于第1帧,但您的按钮位于第20帧 - 您正在尝试将功能添加到尚未存在的内容中。确保在添加事件侦听器时所有实例名称都可用,并且按钮应该可用 - 尽管出于多种原因,以这种方式实现站点导航并不是一个好主意。

如果您想了解why this is bad practice,了解如何以更强大和可重用的方式执行操作,并且如果您愿意学习面向对象编程,请查看this tutorial