2013-06-15 4 views
0

에 그러나 hitTest를 수행 할 때 오류를 반복 그래서,이 코드가 : 대상이 타격을받을 것입니다 개체입니다는 AS3

public function hitTest1(e:Event) : void 
    { 
     if (hitTestObject(target.hit)){ 
     gotoAndStop(2,"Scene 1"); 
     removeEventListener(Event.ENTER_FRAME, hitTest1); 

     } 
    } 

있는, 그리고 히트 이상 계층의 심볼 객체라고합니다. 코드를 실행할 때이 오류가 다시 발생합니다.

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at com.Mass.basics1::Asteroid/hitTest1() 

참고 : 소행성은이 코드가 모두 포함 된 .as 파일입니다.

는 그래서, "대상"개체입니다
package com.Mass.basics1 
{ 

import flash.display.MovieClip; 
import flash.display.Stage; 
import flash.events.Event; 

public class Asteroid extends MovieClip 
{ 
    public var target:Cosmo; 
    private var stageRef:Stage; 
    private var speed:Number; 
    // public var ourAsteroid:Asteroid = new Asteroid(stage); 


    public function Asteroid(stageRef:Stage) 
    { 


     this.stageRef = stageRef; 
     setupAsteroid(true); 

     addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 
     addEventListener(Event.ENTER_FRAME, hitTest1); 

    } 

    public function hitTest1(e:Event):void 
    { 
     if (hitTestObject(target.hit)) 
     { 
      gotoAndStop(2,"Scene 1"); 
      removeEventListener(Event.ENTER_FRAME, hitTest1); 

     } 
    } 


    public function setupAsteroid(randomizeY:Boolean = false):void 
    { 
     //inline conditional, looks complicated but it's not. 
     y = randomizeY ? Math.random() * stageRef.stageHeight:0; 
     x = Math.random() * stageRef.stageWidth; 

     rotation = Math.random() * 360; 
     scaleX = Math.random(); 
     scaleY = scaleX; 

     speed = 20 + Math.random() * 10; 
    } 

    public function loop(e:Event):void 
    { 
     y += speed; 

     if (y > stageRef.stageHeight) 
     { 
      setupAsteroid(); 

     } 


    } 

} 
} 

답변

0

: 여기

참조에 대한 코드의 나머지 부분입니까? 개체를 만들거나 참조를 설정하지 않고 변수를 선언하는 것입니다. 그것은 공개 변수입니다. 어쩌면 다른 곳에서 참조를 설정하고 있습니까? 이 경우 hitTest1 함수를 호출하기 전에 참조를 지정해야합니다. ...

+0

늦은 응답으로 인해 미안합니다. 다른 객체는 자신의 클래스 파일을 가진 행성입니다. 그런 다음 Planet 유형의 변수 "Target"을 만든 다음 히트 테스트를 수행합니다. –

+0

@Rizzla : 이런 질문을 코멘트로하는 것이 낫습니다. 적절한 대답으로 만 대답해야합니다. – puggsoy

+0

@puggsoy 괜찮습니다. 나중에 알게 될 것입니다. – GeorgeCross