我正在尝试启动并运行一个简单的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一定有些奇怪的东西。
我做错了什么?
谢谢!
答案 0 :(得分:2)
您的问题在这里:
square.graphics.drawRect(0, 0, width, height);
此行中width
和height
的值为0
。原因是它们指的是您正在使用的类的width
和height
属性(Main
- 从DisplayObject
继承的属性),它将基于零在我所看到的。
你基本上是在说:
square.graphics.drawRect(0, 0, 0, 0);
哪个什么都不会。
答案 1 :(得分:2)