2016-08-13 8 views
-1

Air 데스크톱 응용 프로그램에서 작업 중입니다. 사용자가 버튼을 누를 때마다 특정 프레임으로 점프하고 문제는 해당 프레임으로 이동 한 후 해당 프레임의 무비 클립에있는 일부 무비 클립은 처음부터 읽었지만 읽지 않습니다.프레임으로 점프 할 때 스테이지의 객체가 읽히지 않습니다.

다음 오류가 발생합니다.

오류 # 1009 : null 개체의 속성 또는 메서드에 액세스 할 수 없습니다. 참조.

나는 그가 무대에있는 것을 읽을 수없는 이유를 모르지만, 이것은 레이어의 배열과 관련이 있다고 생각합니다. 나는 그것이 논리적이지 않다는 것을 때때로 알아 차렸지만, 멈춰있는 한 동일한 프레임에있는 모든 것을 읽어야한다고 생각했다. 매우 인트로를 시작하는 것은 재생 AT)
한 후이 과정의 첫 번째 프레임으로 이동 다음과 같이

프로젝트이다.
2) 첫 프레임에서 사용자는 서로 다른 프레임으로 이동하는 5 개의 버튼 중 하나를 선택합니다.
3) 사용자가 어떤 프레임에있을 때 뒤로 버튼을 클릭하면 메인 프레임으로 돌아 가야합니다.이 버튼 명령은 이고 일부 프레임은 기능에 따라 코드에 의해 생성 된 객체에서 스테이지를 지우는 일부 조건부입니다 에서 불렀다.
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 버튼 lessons, letters 돌아가는을 책임지고 revision은 프레임 1로 돌아갈 때 사라지며 때로는 논리적 인 이유가없는 그 중 하나가 표시됩니다.

+0

더 자세히 설명해주십시오. 예상대로 작동하지 않는 각 프레임에서 읽고 싶은 코드는 무엇입니까? 의견으로 대답하지 마십시오. 이 정보로 질문을 편집하십시오. –

+0

@NealDavis 더 명확하게 질문을 수정했습니다. –

+0

@post your code – null

답변

0

해결되었습니다. 레이어 배열에 관한 내용이었습니다. 내가 한 것은 5 개의 버튼이 포함 된 레이어를 다른 레이어 아래에 놓는 것입니다. 이것은 놀랍게도 문제를 해결했습니다. 나는이 순간까지 이유를 모른다. 그러나 내가 아는 것은 어떤 이유로 든 어떤 사건의 호출자가 다른 어떤 물체를 담고있는 다른 층 아래에 ​​있거나 적어도 같은 층에 있어야한다는 것이다.