如果您将其视为游戏中的对象,您可能应该考虑使用@Pier 建议的 OOP 方法。
这有很多口味:
ADDED_TO_STAGE
您可以从 Sprite 扩展一个类,并在框位于其父级时立即绘制框。
public class box extends Sprite
{
protected var _color:uint;
protected var _size:int;
public function box(size:int=100, color:uint=0x000000)
{
super();
_size = size;
_color = color;
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
protected function onAddedToStage(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
draw();
}
protected function draw():void
{
this.graphics.beginFill(_color);
this.graphics.drawRect(0,0,_size,_size);
this.graphics.endFill();
}
}
这个盒子可以通过调用来构造/创建:
var b:box = new box();
this.addChild(b);
或者你可以让盒子包含自己——如果你处理很多对象,这可能更可行。这个盒子只需要一个对它的父级的引用——当然它应该提供一个 dispose() 函数
public class box
{
private var _parent:Sprite;
protected var s:Sprite;
public function box(parent:Sprite)
{
_parent = parent;
s = new Sprite();
s.graphics.beginFill(0x00000);
s.graphics.drawRect(0,0,100,100);
s.graphics.endFill();
_parent.addChild(s);
}
public function dispose():void
{
_parent.removeChild(s);
}
}
}
在这种情况下,您将按如下方式构建框 - 它需要对已添加到舞台的 Sprite(或任何扩展)的引用:
var b:box = new box(this);
在这两种情况下,您都可以动态更改属性并使对象更加通用:
public function set size(val:int):void
{
_size = val;
draw();
}
public function set color(val:uint):void
{
_color = val;
draw();
}