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

需求:

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

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

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

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

 

思路:

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

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值