2010-12-15 94 views
0

我越来越 - TypeError:错误#1009:无法访问空对象引用的属性或方法。在final_fla :: MainTimeline/frame2()错误#1009:在Flash项目

我的大部分项目完美地工作 - 但加载照片的一部分在按下按钮时不会执行任何操作。我的代码 -

import fl.transitions.Tween; 
import fl.transitions.easing.*; 

stop(); 

function goHome (e:MouseEvent):void{ 
gotoAndStop("Home"); 
} 
home_btn.addEventListener(MouseEvent.CLICK, goHome); 

function goAbout (e:MouseEvent):void{ 
gotoAndStop("About"); 
} 
about_btn.addEventListener(MouseEvent.CLICK, goAbout); 

function goWhat (e:MouseEvent):void{ 
gotoAndStop("What"); 
} 
what_btn.addEventListener(MouseEvent.CLICK, goWhat); 

function goHow (e:MouseEvent):void{ 
gotoAndStop("How"); 
} 
how_btn.addEventListener(MouseEvent.CLICK, goHow); 

function goPricing (e:MouseEvent):void{ 
gotoAndStop("Pricing"); 
} 
price_btn.addEventListener(MouseEvent.CLICK, goPricing); 

function goContact (e:MouseEvent):void{ 
gotoAndStop("Contact"); 
} 
contact_btn.addEventListener(MouseEvent.CLICK, goContact); 



play_btn.addEventListener(MouseEvent.CLICK, goPlay) 

var images = new Array(); 

images[0] = "1.png"; 
images[1] = "2.png"; 
images[2] = "3.png"; 
images[3] = "4.png"; 
images[4] = "5.png"; 

var currentImage:int = 0; 
var myTimer:Timer = new Timer(5000, 0); // 5 seconds 
myTimer.addEventListener(TimerEvent.TIMER, switchPics); 

function goPlay(e:MouseEvent) { 
    myTimer.start(); 
} 

function switchPics(event:TimerEvent):void { 
    currentImage = (currentImage+1)%images.length; 
    loadWindow.source = images[currentImage]; 
    var myTween:Tween = new Tween(loadWindow, "alpha", None.easeOut, 1, 0, 5, true); 
} 
+1

什么是loadWindow?它是在舞台上宣布的吗? – Mattias 2010-12-15 20:25:19

+0

它是一个UIloader,是的,它在舞台上与该实例名称 – Expecto 2010-12-15 20:28:25

+0

更新了我的答案。你确定UILoader存在于你开始脚本的框架中吗? – Mattias 2010-12-15 20:43:43

回答

2

修订

var images : Array = new Array(); 
    images.push("1.png"); 
    images.push("2.png"); 
    images.push("3.png"); 
    images.push("4.png"); 
    images.push("5.png"); 

你确定UILoader的你是从启动脚本框架上存在?我测试了一切,但按钮,它工作正常。我认为当您触发函数switchPics时,UILoader(loadWindow)不存在于当前所在的框架中。


如果loadWindow存在,一切看起来都不错。

我的猜测:

  • LOADWINDOW未声明
  • LOADWINDOW未创建
  • LOADWINDOW不接受源参数/ setter方法
+0

触发switchPics的按钮与loadWindow位于同一帧。这就是为什么它对我没有意义,它应该工作! – Expecto 2010-12-15 20:49:58

+0

如果您没有按钮直接触发它会发生什么?只需运行goPlay(null)并查看会发生什么。适用于我。 – Mattias 2010-12-15 20:53:15

+0

如果您调试电影......您会在哪一行发生崩溃? – Mattias 2010-12-15 21:03:11

0

有时对象尚未加载。 这可以解决:

this.addEventListener(Event.ENTER_FRAME,checkLoaded) 
function checkLoaded(e:Event){ 
    if(mc){ 
     //something 
     this.removeEventListener(Event.ENTER_FRAME,checkLoaded) 
    } 
} 

有时,事件监听器应该被删除解决这个问题

UPDATE

我测试的代码,我认为,马蒂亚斯是正确的。看你把UILoader的使用实例名称LOADWINDOW并把它放在然后在项目的所有帧测试

+0

我的测试http://www.sergio-lima.com/test.rar – Sbml 2010-12-15 21:05:34

1

看起来你缺少的一个分号帧:

play_btn.addEventListener(的MouseEvent .CLICK,goPlay)

就在第40行,你得到错误

+0

heh - 很好的一点,可悲的是,即使有它我得到相同的错误 – Expecto 2010-12-15 21:57:44

+0

是否play_btn实例实际上称为play_btn?如果没有分号,错误消息的行号可能已关闭。 – 2010-12-15 22:23:02