一個簡單的按鈕類

/**
 * 說明: 這是一個簡單的按鈕類
 *
 * 用法: var btn:MyButton = new MyButton(text,width,height);
 *
 * 參數: 1. text 按鈕上要顯示的文字
 *     2. width  按鈕寬度
 *        3. height  按鈕高度
 *
 * 摘自  wayne23 的博客
 */
package
{
    import flash.display.Shape;
    import flash.display.SimpleButton;
    import flash.display.Sprite;
    import flash.filters.DropShadowFilter;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    
    public class MyButton extends SimpleButton
    {
        private var _text:String;
        private var _width:Number;
        private var _height:Number;
        public function MyButton(text:String,width:Number,height:Number)
        {
            this._text = text;
            this._width = width;
            this._height = height;
            this.upState = CreateUpState();
            this.downState = CreateDownState();
            this.overState = CreateOverState();
            this.hitTestState = upState;;
        }
        private function CreateUpState():Sprite
        {
            var sprite:Sprite = new Sprite();
            var background:Shape = CreateColoredRectangle(0x33FF66);
            var text:TextField = CreateTextField(false);
            sprite.addChild(background);
            sprite.addChild(text);
            return sprite;
        }
        private function CreateDownState():Sprite
        {
            var sprite:Sprite = new Sprite();
            var background:Shape = CreateColoredRectangle(0xCCCCCC);
            var text:TextField = CreateTextField(true);
            sprite.addChild(background);
            sprite.addChild(text);
            return sprite;
        }
        private function CreateOverState():Sprite
        {
            var sprite:Sprite = new Sprite();
            var background:Shape = CreateColoredRectangle(0x70FF94);
            var text:TextField = CreateTextField(false);
            sprite.addChild(background);
            sprite.addChild(text);
            return sprite;
        }
        private function CreateColoredRectangle(color:uint):Shape
        {
            var rect:Shape = new Shape();
            rect.graphics.lineStyle(1,0x000000);
            rect.graphics.beginFill(color);
            rect.graphics.drawRoundRect(0,0,_width,_height,10)//最後那個參數,值越大,越接近橢圓  
            rect.graphics.endFill();
            rect.filters = [new DropShadowFilter(2)]//濾鏡  
            return rect;
        }
        private function CreateTextField(downState:Boolean):TextField
        {
            var textField:TextField = new TextField();
            textField.text = _text;
            textField.width = _width;
            var format:TextFormat = new TextFormat();
            format.align = TextFormatAlign.CENTER;
            textField.setTextFormat(format);
            //垂直居中  
            textField.y = (_height - textField.textHeight)/2;
            textField.y -= 2;//Subtract 2 pixels to adjust for offset  
            if(downState)
            {
                textField.x += 1;
                textField.y += 1;
            }
            return textField;
        }
    }
}ui

相關文章
相關標籤/搜索