需求:
在做一些弹出窗口的时候,往往需要在新的弹出窗口被创建出来之前,
要检查是否已经有窗口存在。
如果存在,则先移除已经存在的实例,然后再创建新的实例。
这样就保证了一个类只有一个实例存在。
思路:
主要就是在类中设置一个指向自身的静态属性。
//------------------------------------------------
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); } } }