2011-11-30 5 views
2

간단한 AS3 응용 프로그램을 실행하고 실행하려고하는데 어떤 이유로 스프라이트를 표시 할 수 없습니다. 이 시점에서, 내가하고 싶은 것은 빨간색 스프라이트가 무대를 채우는 것입니다.AS3 스프라이트가 스테이지에 추가되었지만 표시되지 않습니다.

public class Main extends Sprite 
{  
    public function Main():void 
    { 
     super(); 

     stage.scaleMode = StageScaleMode.NO_SCALE; 
     stage.align = StageAlign.TOP_LEFT; 

     var square:Sprite = new Sprite(); 

     square.width = stage.stageWidth; 
     square.height = stage.stageHeight; 
     square.x = square.width/2; 
     square.y = square.height/2; 

     square.graphics.clear(); 
     square.graphics.lineStyle(3, 0xFF0000); 
     square.graphics.beginFill(0xFF0000); 
     square.graphics.drawRect(0, 0, width, height); 
     square.graphics.endFill(); 

     square.addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
     square.addEventListener(MouseEvent.CLICK, onClick); 

     addChild(square); 
    } 

    private function addedToStage(e:Event):void 
    { 
      trace("Added sprite to stage");   
    } 
    private function onClick(e:Event):void 
    { 
      trace("Got click on sprite");   
    }  
} 

추적은 스프라이트가 무대에 추가 된 것을 알 수 있지만, 아무것도 표시되지 않습니다, 나는 그것을 클릭하면 온 클릭 함수는 절대 호출되지됩니다. Sprite 대신 TextField를 사용하면 잘 나타납니다. 스프라이트에 관한 이상한 것이 있어야합니다.

내가 뭘 잘못하고 있니?

감사합니다.

답변

2

빈 값 Sprite의 너비와 높이를 설정하려고하면 0이 반환됩니다. here을 보겠습니다.

Mr.Marty Wallace의 대답을 참조하십시오.

+0

@ Marty Wallace : 지금? – Benny

+0

나는 네가 의미하는 것을 실제로 가지고있다. 미안하다. '+ 1' – Marty

+0

당신의 연결된 항목이 가장 잘 설명했습니다. 감사. – Greg

2

귀하의 문제는 여기에 있습니다 :이 줄 widthheight에 대한

square.graphics.drawRect(0, 0, width, height); 

값은 0이다. 그들은 내가 볼 수있는 것에 기초하여 0이 될 DisplayObject에서 계승 된 (Main - 속성이 계승 된) 클래스의 widthheight 속성을 참조하기 때문입니다.

당신은 기본적으로 말을하는지 :

square.graphics.drawRect(0, 0, 0, 0); 

아무것도 렌더링하지 않습니다 어느.

+0

그래도 drawRect()를 사용하여 stage.stageWidth 및 stage.stageHeight를 사용하도록 변경했지만 아무 것도 볼 수 없습니다. 또한 너비와 높이를 설정 한 위의 몇 줄을 보면 폭과 높이를 올바르게 설정하지 않았을까요? – Greg

관련 문제