2011-09-22 2 views
1

나는 xval ad yVal에 대해 각각 파라미터 22와 58을 사용하기 전에이 함수에 대해 당황 스럽다. swf가 컴파일되고 테스트 될 때 아무 것도 표시하지 않으며 오류가 없습니다. 확실하게 나는 여기서 명백한 것을 놓치고있다. 이 코드는 문서 클래스에 있습니다AS3의 라인에 관한 어리석은 질문

private function mLine(xVal : int, yVal : int) { 
     var rCol = 0x0000FF; 
     var incr = Math.round((Math.random() * 20) + 8); 
     lns.push(new Shape()); 
     var i = lns.length - 1; 

     this.addChild(lns[i]); 
     lns[i].graphics.moveTo(xVal, yVal); 
     lns[i].graphics.lineStyle(10, rCol); 
     lns[i].graphics.lineTo(xVal, yVal + 20); 
     lns[i].name = incr; 
     trace("lns[" + i + "] x is " + lns[i].x); // outputs 'lns[0] x is 0' 
     trace("xVal is " + xVal); // outputs 'xVal is 22' 
     trace("yVal is " + yVal); //outputs 'yVal is 58' 
     trace(stage.contains(lns[i])); // outputs 'true' 
    } 
+3

귀하의 질문은 "바보 같은 질문"이라고하지만, 전혀 질문을 볼 수 없습니다. –

답변

1

당신이 어딘가에 private var lns = [];를 선언 한 가정하면, 그것은 파란색 선 (직선 아래로 지정된 위치에서 20 픽셀)을 그립니다.

그것은 당신이 아마 무대에서 그 클래스의 객체가없는 것을 의미 아무것도

를 표시하지 않습니다. 문서 클래스에서 mLine을 포함하는 클래스의 인스턴스를 표시하려면 addChild을 사용해야합니다. mLine은 어떻게 든 분명히 호출되어야합니다. 클래스 생성자에서이 작업을 수행 할 수 있지만 stagenull이 될 것이므로 null 포인터 오류가 발생하지 않도록 마지막 trace 문을 제거해야합니다.

편집 : 문서 클래스에 있다고하셨습니다. 그래서, 다른 것을 그리는 것이 시도되는지보십시오. 문제는이 기능이있는 것 같지 않습니다.

+0

그래서 문제는이 모든 것보다 훨씬 간단합니다. 내 영화 클립 높이가 5000px로 매우 높았습니다. 테스트 한 결과 화면 하단 만 보였으므로 파란색 선이 표시되지 않습니다. –

0

코드가 제대로 작동하는 것처럼 보입니다. 나는 액션 스크립트 3 당신이 그들을 설정하지 때문에 X 및 모양의 y 속성이 모두 0이됩니다 모범 사례

private function drawLine(xVal:int, yVal:int):void 
{ 
    var lineColor:uint = 0x0000FF; 

    var lineShape:Shape = new Shape(); 
    //lineShape.name = String(Math.round((Math.random() * 20) + 8)); 
    lineShape.graphics.lineStyle(10, lineColor); 
    lineShape.graphics.moveTo(xVal, yVal); 
    lineShape.graphics.lineTo(xVal, yVal + 20); 
    addChild(lineShape); 
    lines.push(lineShape); 
} 

을 잘 준수하도록 재 작성했다. xVal과 yVal의 도형 안에 선을 그리는 것입니다. 당신도 다음과 같은 일을 할 수 있습니다 :

private function mLine(xVal:int, yVal:int) 
{ 
    var lineColor:uint = 0x0000FF; 

    var lineShape:Shape = new Shape(); 
    //lineShape.name = String(Math.round((Math.random() * 20) + 8)); 
    lineShape.graphics.lineStyle(10, lineColor); 
    lineShape.graphics.moveTo(0, 0); 
    lineShape.graphics.lineTo(0, 20); 
    lineShape.x = xVal; 
    lineShape.y = yVal; 
    addChild(lineShape); 
    lines.push(lineShape); 
} 

잘 모르겠지만 왜 그런지 모르겠습니다.