0

如果有一个使用 Chan 类的主类,给定两个代码,例如

public class Chan extends Sprite
{

    public function Chan():void
    {
       this.graphics.beginFill(0x123456); 
       this.graphics.drawRect(100,100,30,30);
    }
}

public class Chan extends Sprite
{
    public static var rect:Sprite=new Sprite(); 
    public function Chan():void
    {
       rect.graphics.beginFill(0x123456); 
       rect.graphics.drawRect(100,100,30,30);
    }
}

为什么一个似乎工作,而另一个没有?

4

1 回答 1

0

范围。在第一个示例中,您正在绘制已经在舞台上的精灵实例本身。第二个示例中的 rect 是静态的,属于该类。所以虽然你在画它,但它是不可见的……它只存在于内存中。如果您在第二个示例中再添加一行,它也将是可见的。

public class Chan extends Sprite
{
    public static var rect:Sprite=new Sprite(); 
    public function Chan():void
    {
        rect.graphics.beginFill(0x123456); 
        rect.graphics.drawRect(100,100,30,30);
        this.addChild(rect);
    }
}

编辑:

我想详细说明一下。rect 是静态变量这一事实并不是主要问题。我在回答中提到它是静态的,但不想让您感到困惑。它不起作用的原因是您绘制的范围不在视图中......它只是一个变量。所以即使它说:

public var rect:Sprite = new Sprite();

在您调用 addChild(rect) 将其实际添加到视图中之前,它是不可见的。

于 2012-11-10T16:39:53.913 回答