保证一个类只有一个实例存在

    技术2022-05-20  53

    需求:

    在做一些弹出窗口的时候,往往需要在新的弹出窗口被创建出来之前,

    要检查是否已经有窗口存在。

    如果存在,则先移除已经存在的实例,然后再创建新的实例。

    这样就保证了一个类只有一个实例存在。

     

    思路:

    主要就是在类中设置一个指向自身的静态属性。

     

    //------------------------------------------------

    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);                 }     } }


    最新回复(0)