본문 바로가기

끄적끄적./그냥

플래시 - TypeError: Error #1009: null 객체 참조의 속성이나 메서드에 액세스할 수 없습니다.


TypeError: Error #1009: null 객체 참조의 속성이나 메서드에 액세스할 수 없습니다.

 at _fla::Timeline_1/frame1()



플래시 AS3를 처음으로 해보던중 저런 오류가 발생했다.


(아래 내용은 주저리 주저리 에러 내용을 찾는 과정이고 해결한 내용은 가장 아래에 있습니다.)

...

일단 오류의 위치를 찾기 위해 Timeline_1/frame1()로 갔다. (사실 1프레임밖에 안만듬 ㅋ)

그리고 오류가 있는 범위를 줄이기 위해 프레임1의 액션을 모두 주석처리 하였다.
주석처리 하는 방법 -> /*주석처리할 내용*/

그리고 Ctrl+Enter로 무비테스트를 해보았다.

TypeError: Error #1009: null 객체 참조의 속성이나 메서드에 액세스할 수 없습니다.
 at _fla::Timeline_1/frame1()

또 나온다.

그럼 방금 주석처리한 부분에는 오류날 내용이 없다는 뜻이다.

그래도 혹시 모르니 그대로 주석처리를 해두고

1프레임의 다른 레이어(또는 무비클립 안)으로 가서 액션을 모두 주석처리 해보자.

그리고 또 Ctrl+Enter로 무비테스트를 해본다.

오! 이번엔 오류가 나지 않는다.

그럼 방금 주석처리한 액션에 오류날 내용이 있다는 뜻이다.





/*
btn_stop.addEventListener(MouseEvent.CLICK, clickstop);
function clickstop(e:MouseEvent):void
{
MovieClip(this.root).mov1.stop();
MovieClip(this.root).mov2.stop();
gotoAndStop(2);
}

 

btn_play.addEventListener(MouseEvent.CLICK, clickreplay);
function clickreplay(e:MouseEvent):void
{
var i:int = 0;
MovieClip(this.root).mov1.load(this["root"]._Array[i+1]);
MovieClip(this.root).mov2.play(this["root"]._Array[i]);
MovieClip(this.root).mov1.visible = false;
MovieClip(this.root).mov2.visible = true;
}
*/


내가 오류낸 액션은 이것이었다.
(AS3는 처음해봐서 아직 저 액션이 제대로 된지도 모르겠어요 ㅠ)

이제 오류 범위를 여기서 또 좁히기 위해 주석을 다음과 같이 해봤다.





btn_stop.addEventListener(MouseEvent.CLICK, clickstop);
function clickstop(e:MouseEvent):void
{
MovieClip(this.root).mov1.stop();
MovieClip(this.root).mov2.stop();
gotoAndStop(2);
}

 

/*
btn_play.addEventListener(MouseEvent.CLICK, clickreplay);
function clickreplay(e:MouseEvent):void
{
var i:int = 0;
MovieClip(this.root).mov1.load(this["root"]._Array[i+1]);
MovieClip(this.root).mov2.play(this["root"]._Array[i]);
MovieClip(this.root).mov1.visible = false;
MovieClip(this.root).mov2.visible = true;
}
*/



여기서 에러가 나면 저 부분이 문제인 것이다.
Ctrl + Enter..

오류가 나지 않는다.... 저부분은 아니다.




btn_stop.addEventListener(MouseEvent.CLICK, clickstop);
function clickstop(e:MouseEvent):void
{
MovieClip(this.root).mov1.stop();
MovieClip(this.root).mov2.stop();
gotoAndStop(2);
}

 


btn_play.addEventListener(MouseEvent.CLICK, clickreplay);
function clickreplay(e:MouseEvent):void
{
}

/*
var i:int = 0;
MovieClip(this.root).mov1.load(this["root"]._Array[i+1]);
MovieClip(this.root).mov2.play(this["root"]._Array[i]);
MovieClip(this.root).mov1.visible = false;
MovieClip(this.root).mov2.visible = true;
}
*/



위에서 주석처리한 부분은 아직 제대로 됬는지 모르는 부분이라 저기만 주석처리 해보았다.

왠지 저기가 문제인것같다..

테스트 해보니 오류가 난다...

그럼


btn_play.addEventListener(MouseEvent.CLICK, clickreplay);
function clickreplay(e:MouseEvent):void
{
}

이부분이 문제다!

근데 대체 왜???

살펴보니......

해결!

저 액션이 써있는 프레임에 'btn_play'라는 인스턴스 네임을 가진 객체가 없었던 것이다...

앜!!!!!!!!!!!!!!!!!!!!!!!!!!!