저는 게임의 충돌 코드에 이상한 문제가 있었으며이를 추적 할 수있었습니다. 즉, 내 속성의 getter가 NaN을 반환하는 대신 실제 숫자. 여기Getter가 NaN을 반환 함
private var _top:Number;
private var _bottom:Number;
private var _left:Number;
private var _right:Number;
그리고 게터됩니다 :
public function get top():Number
{
return _top;
}
public function get bottom():Number
{
return _bottom;
}
public function get left():Number
{
return _left;
}
public function get right():Number
{
return _right;
}
값이 생성 될 공공 기능 setSides(tileSize:Number)
의를 호출하여 여기에
tileSize
매개 변수에 따라 다름). 실행 한 후에 게터를 사용하여 값을 가져 오는 추적을 실행하지만 모두 NaN을 반환합니다.
게터를 사용하지 않고 setSides()
내에 비슷한 추적을 실행하면 (즉, 직접 변수를 사용하여) 올바른 값을 반환합니다. 그리고 확실히, 나는 또한 getter을 사용하여 함수 안에서 수행 했으므로 문제가 될 것이라고 확신합니다.
누구에게 무슨 일이 일어나고 있는지 알고 계십니까?
편집 : 여기 내 setSides()
기능입니다 :
public function setSides(tileSize:Number):void
{
var _top:Number = Math.floor(_yPos/tileSize);
var _bottom:Number = Math.floor((_yPos + 45)/tileSize);
var _left:Number = Math.floor(_xPos/tileSize);
var _right:Number = Math.floor((_xPos + 20)/tileSize);
trace("top: " + top + " bottom: " + top + " left: " + left + " right: " + right); //This gives the correct values, not NaN
}
하지만 (내 추적에있는 보여 것)에 할당하고있어 내 값에 문제가있는 경우에도, I는 0의 값을 할당 한 내 생성자의 각 변수에, 그래서 그들은 클래스가 인스턴스화 된 순간부터 NaN을 제공해서는 안됩니다.
편집 : 오, 내가 지금이 사실을 발견했다. 몇 가지 테스트와 재 편집으로 인해 저는 여전히 변수를 정의하는 것처럼 사용하고있었습니다 (var
및 :Number
). 또한 "그들에게 0을 할당하는 것"은 제가 언급 한이 테스트와 재 편집 이전이기도 했으므로 그렇게하지 않았습니다.
이 게터는 정상적으로 보입니다. 'setSides'의 코드와 getter를 사용하지 않고 올바른 값을 얻는 곳을 게시하십시오. 값이 다른 곳에서 변경 될 수 있습니다. – taskinoor
기본적으로 NaN입니다. 값을 설정하는 방법 만 보아도 질문에 대답하는 데 도움이됩니다. –