Hi,

The gradient overlay would be a layer on top of your button shape which had a linear gradient white fill, with alphas [...@0%, 1...@50%, 0...@51%, 1...@100%]

Playing with this in Flash with the drawing tools you might need to adjust the layer for 75% opacity - or just change the gradient to 75% of those values..

   HTH

   Glen
Alexander Farber wrote:
Hello,

could someone please help me with a glossy button?
I think I'm missing something minor in my code (at the bottom).

I have a gradient running vertically, but it's too soft -
I don't know how to create the crisp line in the middle,
which you see for example in this Photoshop example:
  http://www.psfreak.com/vista-styled-button
(I also wonder what is the "Gradient Overlay"
mentioned there and how to create it in ActionScript).

Thank you
Alex

package {
    import flash.display.Sprite;

    public class SimpleButtonExample extends Sprite {
        public function SimpleButtonExample() {
            var button:CustomSimpleButton = new CustomSimpleButton();
            button.x = button.y = 100;
            addChild(button);
        }
    }
}

import flash.display.*;
import flash.filters.*;
import flash.geom.*;

class CustomSimpleButton extends SimpleButton {
    private var upColor:uint   = 0xFFCC00;
    private var overColor:uint = 0xCCFF00;
    private var downColor:uint = 0x00CCFF;
    private var size:uint      = 80;

    public function CustomSimpleButton() {
        downState      = new ButtonDisplayState(downColor, size);
        overState      = new ButtonDisplayState(overColor, size);
        upState        = new ButtonDisplayState(upColor, size);
        hitTestState   = upState;
        useHandCursor  = true;
    }
}

class ButtonDisplayState extends Shape {
    private var bgColor:uint;
    private var size:uint;

    public static const SHADOW:DropShadowFilter =
        new DropShadowFilter(0, 0, 0x000000, 1.0, 4, 4, 1, 1, false,
false, false);

    private static const GLOW:GlowFilter =
        new GlowFilter(0xFFFFFF, 0.8, 32, 32, 1, 1, true, false);

    public function ButtonDisplayState(bgColor:uint, size:uint) {
        this.bgColor = bgColor;
        this.size    = size;
        draw();
    }

    private static function brighten(color:uint, modifier:int):uint {
            var red   = (color >> 16) & 0xFF;
            var green = (color >> 8) & 0xFF;
            var blue  = color & 0xFF;
        
            red += modifier;
            if (red > 0xFF)
                red = 0xFF;
                
            green += modifier;
            if (green > 0xFF)
                green = 0xFF;
                
            blue += modifier;
            if (blue > 0xFF)
                blue = 0xFF;
        
            return (red << 16) | (green << 8) | blue;
    }

    private function draw():void {
        var colors:Array = [brighten(bgColor, 120), bgColor, brighten(bgColor, 
40)];
        var alphas:Array = [1, 1, 1];
        var ratios:Array = [0, 100, 255];
        var matrix:Matrix = new Matrix();
        matrix.createGradientBox(size, size, Math.PI / 2, 0, 0);

        graphics.beginGradientFill(GradientType.LINEAR, colors, alphas,
ratios, matrix);
        graphics.drawRoundRect(0, 0, size * 4, size, 4);
        
        filters = [ SHADOW, GLOW ];
    }
}
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


--

Glen Pike
01326 218440
www.glenpike.co.uk <http://www.glenpike.co.uk>

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to