需求:
在做一些弹出窗口的时候,往往需要在新的弹出窗口被创建出来之前,
要检查是否已经有窗口存在。
如果存在,则先移除已经存在的实例,然后再创建新的实例。
这样就保证了一个类只有一个实例存在。
思路:
主要就是在类中设置一个指向自身的静态属性。
//------------------------------------------------
package {
import flash.display.Graphics;
import flash.display.Sprite;
/**
* @author pengyangjin
*/
public class CustomImg extends Sprite {
private static var instance : CustomImg = null;
public function CustomImg() {
if (instance)
instance.dispose(); //注意的地方
show();
}
private function show() : void {
var g : Graphics = this.graphics;
g.beginFill(0xff0000);
g.drawRoundRectComplex(0, 0, 200, 100, 15, 15, 15, 15);
g.endFill();
instance = this;
}
public function dispose() : void {
if (this.parent != null)
this.parent.removeChild(this);
if (instance) {
instance = null;
}
}
}
}
//------------------------------------------------
package {
import flash.events.MouseEvent;
import fl.controls.Button;
import flash.display.Sprite;
public class Main extends Sprite {
public function Main() {
var btn : Button = new Button();
btn.label = "test";
btn.x = 100;
btn.y = 150;
btn.addEventListener(MouseEvent.CLICK, _btnClickHandler);
addChild(btn);
}
private function _btnClickHandler(event : MouseEvent) : void {
var ci : CustomImg = new CustomImg();
ci.x = Math.random() * 100;
addChild(ci);
}
}
}