AS3精灵添加到舞台但不可见

时间:2011-11-30 04:38:50

标签: actionscript-3 actionscript air

我正在尝试启动并运行一个简单的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");         
     }      
}

跟踪显示精灵已添加到舞台中,但没有显示任何内容,如果单击它,则永远不会调用onClick函数。如果我使用TextField而不是Sprite,它显示就好了。 Sprites一定有些奇怪的东西。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

您的问题在这里:

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

此行中widthheight的值为0。原因是它们指的是您正在使用的类的widthheight属性(Main - 从DisplayObject继承的属性),它将基于零在我所看到的。

你基本上是在说:

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

哪个什么都不会。

答案 1 :(得分:2)

尝试设置空Sprite的宽度和高度将返回0.查看here

请参阅Mr.Marty Wallace的回答。