为SimpleButton添加Disabled状态

默认下,SimpleButton只有四种状态,如何使SimpleButton像Button组件一样具有Disabled状态呢?

下面代码扩展了SimpleButton类,使SimpleButton具有Disabled状态,并能添加标签文本。

package { 
    import flash.display.DisplayObject; 
    import flash.display.SimpleButton; 
    public class DisabledSimpleButton extends SimpleButton  
    { 
        protected var enabledState: DisplayObject; 
        protected var disabledState: DisplayObject; 
        /** 
         * DisabledSimpleButton构造函数 
         *  
         * @param  label    标签文本 
         */     
        public function DisabledSimpleButton(label: String)  
        { 
            enabledState = new ButtonDisplayState(label, 0); 
            disabledState = new ButtonDisplayState(label, 3);            
            overState = new ButtonDisplayState(label, 1); 
            downState = new ButtonDisplayState(label, 2);            
            upState = enabledState;                                          
            hitTestState = upState; 
        } 
        /** 
         * 覆盖enabled属性的setter方法 
         * @param  value  Boolean 指定按钮是否处于启用状态 
         */ 
        override public function set enabled(value: Boolean):void 
        { 
            super.enabled = value; 
            // 设置鼠标事件是否可用            
            this.mouseEnabled = enabled; 
            // 按钮处于可用状态时,按钮弹起状态的显示对象不变,否则替换成不可用状态的显示对象, 
            upState = (enabled) ? enabledState : disabledState; 
        }    
    } 
}

至于ButtonDisplayState类及使用方法,请参考源文件。点击此处下载。

发表评论