2016-08-13 15 views
-1

我正在使用Air桌面应用程序。在用户按下按钮的某个时刻,它会跳转到特定的帧,问题出现在该帧后,该帧的舞台上的某些Movieclips虽然从一开始就被读取,但不会被读取。当跳到他们的框架时不会读取舞台上的对象

发生以下错误。

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

我不知道他为什么看不清已经在舞台上的东西,我想这是与图层排列有关的东西。我注意到,有时虽然我不觉得它合乎逻辑,但它应该读取所​​有在同一帧中的内容,只要它停在它上面,对吧?

该项目如下:
1)在最开始的前奏被播放,然后将其转移到过程的第一帧。
2)在第一帧,用户选择5个按钮中的一个按钮进行点击,根据每个按钮进入不同的框架。
3)当用户在任何帧时,如果他点击一个后退按钮,它应该返回到主框架,这个按钮命令是gotoAndStop(1)和一些条件removeChild()清除由代码生成的任何对象的阶段取决于框架的功能被叫来。
4)点击这个后退按钮后,一个或多个前5个按钮突然消失,并产生一个错误 - - 它不能被程序读取,它无法读取任何事件并生成上述错误。 我的代码如下:

var myLettersLoader:URLLoader= new URLLoader(); 
mainMenu.addEventListener(MouseEvent.CLICK,gotomainMenu); 
letters.addEventListener(MouseEvent.CLICK,showLetters); 
lessons.addEventListener(MouseEvent.CLICK,showLessons); 
revision.addEventListener(MouseEvent.CLICK,showRevision); 
myLettersLoader.load(new URLRequest("data/letters/letters.xml")); 
myLettersLoader.addEventListener(Event.COMPLETE,loadXML); 
function showLetters(e:MouseEvent) 
{ 

    //gotoAndStop(2) 
    //aaaaa.alpha=1; 
    //aaaaa.visible=true; 
    Tweener.addTween(e.currentTarget, {width:originalWidth,height:originalHeight, time:0.25, transition:"linear"}); 
    myPlace.visible = true; 
    myPlace2.visible = false; 
    myPlace3.visible = false; 
    jewels.visible = false; 
    mainContainer.visible=false; 
    close.visible=false; 
    studentBook.visible = false; 
    mainButton = e.currentTarget.name; 
    Tweener.addTween(myPlace, {alpha:1, transition:"linear"}); 
    lettersContainer.visible=true; 

    Tweener.addTween(letterContainerText, {alpha:1, transition:"linear"}); 

    for (var i=1; i<29; i++) 
    { 

     var letter = "L" + i; 

     myPlace[letter].id = i; 
     myPlace[letter].alpha = 1; 
     myPlace[letter].addEventListener(MouseEvent.CLICK,gotoLetterFrame); 
     myPlace[letter].buttonMode = true; 
    } 
} 
function showLessons(e:MouseEvent) 
{ 
    Tweener.addTween(e.currentTarget, {width:originalWidth,height:originalHeight, time:0.25, transition:"linear"}); 
    myPlace.visible= false; 
    myPlace2.visible = true; 
    myPlace3.visible = false; 
    jewels.visible = false; 
    mainContainer.visible=false; 
    close.visible=false; 
    studentBook.visible = false; 
    lettersContainer.visible=true; 
    mainButton = e.currentTarget.name; 
    Tweener.addTween(myPlace2, {alpha:1, transition:"linear"}); 
    studentBook.alpha = 0; 
    for (var i=0; i<5; i++) 
    { 
     var lesson = "Lesson" + i; 
     myPlace2[lesson].id = i; 
     myPlace2[lesson].alpha = 1; 
     myPlace2[lesson].addEventListener(MouseEvent.CLICK,gotolessonFrame); 
     myPlace2[lesson].buttonMode = true; 
    } 
} 

//=======================Revision functions================================== 
function showRevision(e:MouseEvent) 
{ 
    Tweener.addTween(e.currentTarget, {width:originalWidth,height:originalHeight, time:0.25, transition:"linear"}); 
    myPlace.visible= false; 
    myPlace2.visible = false; 
    myPlace3.visible = true; 
    jewels.visible = false; 
    mainContainer.visible=false; 
    close.visible=false; 
    studentBook.visible = false; 
    lettersContainer.visible=true; 
    mainButton = e.currentTarget.name; 
    Tweener.addTween(myPlace3, {alpha:1, transition:"linear"}); 
    studentBook.alpha = 0; 
    for (var i=0; i<7; i++) 
    { 
     var revision = "Revision" + i; 
     myPlace3[revision].id = i; 
     myPlace3[revision].alpha = 1; 
     myPlace3[revision].addEventListener(MouseEvent.CLICK,gotoRevisionFrame); 
     myPlace3[revision].buttonMode = true; 
    } 
} 
//======================================================== 
function gotoLetterFrame(e:MouseEvent) 
{ 
    reloadButton.visible=true; 
    mainMenu.visible=true; 
    myClose.visible=true; 
    reloadButton.visible=true; 
    myNext.visible=true; 

    currentTarget=(e.currentTarget.id-1); 
    currentName = arrOfLetters[currentTarget]; 
    xmlListOfClass=new XMLList(myxml.letter.(@id==currentName).children()); 
    gotoAndStop(xmlListOfClass[counter].localName()); 
    abc.visible=abcd.visible=true; 
    mainMenu.buttonMode=true; 
} 
function gotolessonFrame(e:MouseEvent) 
{ 
    reloadButton.visible=true; 
    mainMenu.visible=true; 
    myClose.visible=true; 
    reloadButton.visible=true; 
    myNext.visible=true; 
    currentTarget=(e.currentTarget.id); 
    xmlListOfClass = new XMLList(lessonsArr[currentTarget].lesson.children()); 
    gotoAndStop(xmlListOfClass[counter].localName()); 
    abc.visible=abcd.visible=true; 
    mainMenu.buttonMode=true; 
} 
function gotoRevisionFrame(e:MouseEvent) 
{ 
    reloadButton.visible=true; 
    mainMenu.visible=true; 
    myClose.visible=true; 
    reloadButton.visible=true; 
    myNext.visible=true; 
    currentTarget=(e.currentTarget.id); 
    myRevisionLoader.load(new URLRequest("data/revisions/"+currentTarget+"/revision.xml")); 
    myRevisionLoader.addEventListener(Event.COMPLETE,loadRevisionXML); 
} 
//===================================== 
function loadLessonXML(e:Event) 
{ 
    lessonsArr[xx] = new XML(e.target.data); 
    xx++; 
} 
//==============================For revision================================== 
function loadRevisionXML(e:Event) 
{ 
    revisionArr = new XML(e.target.data); 
    xmlListOfClass = new XMLList(revisionArr.revision.children()); 
    gotoAndStop(xmlListOfClass[counter].localName()); 
    abc.visible=abcd.visible=true; 
    mainMenu.buttonMode=true; 
} 
function loadXML(e:Event) 
{ 
    myxml = new XML(e.target.data); 
} 
//==================================== 
function gotomainMenu(e:MouseEvent) 
{ 
    gotoAndPlay(1); 
} 

此代码是在第一帧中,而在第二帧中的按钮mainButton 是按钮负责回去框架1 的按钮lessonslettersrevision在返回第1帧时消失,或者其中一个有时没有逻辑原因

+0

给出一些更多的细节。您希望在每个帧上阅读的代码是不是像您期望的那样工作?不要在评论中回答;用这些信息编辑你的问题。 –

+0

@NealDavis我修改了我的问题,以便更清楚 –

+0

@post your code – null

回答

0

我解决了它,它全部是关于图层的排列。 我所做的一切就是将其中包含5个按钮的图层放在其他图层下。这令人惊讶地解决了这个问题。直到这一刻我才知道原因,但我知道的是,出于某种原因,某些事件的调用者必须位于包含其他对象的其他图层下,或者至少在同一图层中。

相关问题