2012-10-13 2 views
1

나는이 문제가 있습니다 및거의 모든 노력을 : ypeError : 오류 # 1009 :

메신저 유니을위한 플랫폼 게임을 전혀 극복하지 못할 null 객체 참조의 속성이나 메서드에 액세스 할 수 없습니다

나는이 2 개 파일

flashgame.fla 및 Coin.as

나는 플레이어가 모든 동전을 수집 한 후 프레임가 프레임 1로 변경됩니다한다는 코드가 (이 동전 클래스에 대한 코드) 프레임 2. 내가 할 때 이 메시지가 나타납니다

TypeError : 오류 # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다. 코인/update() TypeError : 오류 # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다. 내가 시도 및 캐치 등 여러 가지

을 시도

flashgame_fla에서 :: MainTimeline/루프() 나는 Coin.as이 무비 클립을 다음 프레임에 갈 때 그래서되어 확장 있기 때문에이 작업을 수행 생각 아무 것도 없을 때 동전을 찾으려하고 있습니다. 여기

내가 게임에있는 모든 동전을 기록 flashgame.fla의 배열을 Coin.as


package { 

import flash.display.MovieClip; 
import flash.events.*; 


public class Coin extends MovieClip { 
    var player:MovieClip; 
    var mainTimeLine = MovieClip(root); 

    public function Coin() { 
     this.addEventListener(Event.ENTER_FRAME, update); 
    } 

    function update(event:Event):void 
    { 
     player=MovieClip(root).player; 
     if(this.hitTestObject(player)) 
     { 
      this.removeEventListener(Event.ENTER_FRAME, update); 
      parent.removeChild(this); 
      mainTimeLine.coinCount++; 
     } 

    } 
} 

}

코드입니다. 플레이어가 그 플레이어를 때리면 어레이에서 연결됩니다. 어떤 도움을


for (i=0; i<coin.length; i++) 
    { 
     if (player.getRect(this).intersects(coin[i])) 
     { 
      coinSnd.play(); 
      coin.splice(i,1); 
     } 
    } 

감사를 flashgame.fla에서 2

중요한 물건을 프레임


var coin:Array = new Array(); 
for (i=0; i<numChildren; i++) 
{ 
    if (getChildAt(i) is Coin) 
    { 
     coin.push(getChildAt(i).getRect(this)); 
    } 
} 

접합 동전가는 경우도 문제의 원인이 될 수있다 주어진 i 더 이상 필요한 것이 있으면 저에게 물어보십시오 :) all g with screenshots

+0

추가 나는 동전 층에 또 다른 프레임 또는 키 프레임을 추가 할 때 내가 어떤?.! 더 이상 오류가 발생하지만 플래시가 완전히 정지됩니다. -_- –

답변

0

이것은 플레이어가 Coin 클래스의 업데이트 기능에서 찾을 수 없기 때문일 가능성이 큽니다. 이것은 표시 객체가 무대에 없더라도 ENTER_FRAME 이벤트가 실행되기 때문입니다. 원하지 않는 경우가 많습니다. 이 경우 플레이어에 대해 적중을 시도합니다.

이 문제를 해결하려면 코인이 스테이지에 연결되면 바로 업데이트를 시작하고 스테이지에서 제거되는 즉시 실행을 중지 할 수 있습니다.

public function Coin() { 
    this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
    this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); 
} 

function onAddedToStage(event:Event):void { 
    this.addEventListener(Event.ENTER_FRAME, update); 
} 

function onRemovedFromStage(event:Event):void { 
    this.removeEventListener(Event.ENTER_FRAME, update); 
} 
+0

게시자가 게시 한 방식대로 설정했습니다. 코드의 나머지 부분 아래에있는 업데이트 기능으로 편집했지만 여전히 동일한 오류가 발생했습니다. 코드가 잘못 설정되었거나 작동하지 않는 경우 확실하지 않음 :/ –

0

어떤 줄 번호가 어떤 오류가 발생합니까? 변수가 null인지 알려 주어야합니다.

내 생각에 오류의이 부분을 기반으로합니다. "TypeError : Error # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다.동전에서/update() "까지 새 키 프레임으로 이동 했으므로 동전의 parent이 (가) null이고 인스턴스가 스테이지에서 제거 되었기 때문입니다.

즉, 오류가 발생하고있는 것 같습니다. parent.removeChild(this);으로 라인 -이 올바른

그런 경우는 다음에 removeChild를 호출하기 전에 parent가 null인지 여부를 확인 있다면

+0

나는 아마도 당신이 맞을 것이라고 생각한다. 나는 동전과 플레이어가있는 프레임을 계속 사용하기로 결정했다. 나는 실용적이지만이 임무는 필요하다는 것을 알고있다. :) –

+0

하지만 어떤 줄에 오류가 발생하는지 - 물론 오류는 코드 자체와 일치 할 수있는 줄 번호를 제공합니까? –

관련 문제