我有一个从sprite继承的单例类,以便它可以访问舞台,就像这样..
package
{
import flash.display.Sprite;
public class C extends Sprite
{
private var _grid:Array = new Array();
public function get Grid():Array
{
return _grid;
}
private static var _instance:C;
public static function get Instance():C
{
if (_instance == null)
{
_instance = new C();
}
return _instance;
}
function C()
{
this.InitGrid();
}
private function InitGrid():void
{
var gridWidth:Number = stage.width / 10;
}
}
}
这会引发错误
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at C/InitGrid()
at C()
at C$/get Instance()
at C()
at Main()
如果我用int替换stage.width,代码执行OK。 这是因为该对象尚未添加到舞台的任何子节目的displayList中吗?
由于
答案 0 :(得分:3)
是。一旦Sprite成为Display列表的一部分,Sprite将只有一个stage属性 要获得舞台,您需要为您的单身人士提供舞台的参考或将其添加到“显示”列表中。如果你选择后者,你可以添加一个监听器Event.ADDED_TO_STAGE,并在你的单身内部相应地处理它。