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'라는 인스턴스 네임을 가진 객체가 없었던 것이다...
앜!!!!!!!!!!!!!!!!!!!!!!!!!!!