Cool alex,

I was trying to find my old aqua code, but can't locate it, it was as2
anyway, so I'll have rewrite it for as3.

Not quite vista, but still acceptable I think:
http://www.objectpainters.com/flashExamples/aqua/

As said, I'll have to rewrite it for as3 and I made an error in the
reflection, mixing it up with how the shadow would fall when using
backlighting I applied a displacement map to have it 'spread' which is of
course wrong for a reflection, which shouldn't spread at all.

Anyway, if anyone is interested I can still post the code after migration.

regards,
JC



On Sun, Oct 18, 2009 at 10:57 AM, Cor <c...@chello.nl> wrote:

> Nice work Alex.
> Thanks for your final solution!
>
> Regards
> Cor
>
> -----Original Message-----
> From: flashcoders-boun...@chattyfig.figleaf.com
> [mailto:flashcoders-boun...@chattyfig.figleaf.com] On Behalf Of Alexander
> Farber
> Sent: zondag 18 oktober 2009 10:29
> To: Flash Coders List
> Subject: Re: [Flashcoders] Vista-like glossy SimpleButton - please help
> with
> the final touch
>
> Hello all,
>
> thank you for your replies.
>
> I've added another Shape on top of my gradient
> and set its blendMode to BlendMode.OVERLAY
> and am finally satisfied with the result (except
> the downState - red doesn't look good there
> for some reason. The overlay is too bright there)...
>
> Your suggestion with BevelFilter, Cor, is a good
> trick too - thank you. It just doesn't match my
> case, I want to make a long bar of glossy buttons.
>
> I'm pasting my source code below for
> the archives and if someone is interested.
>
> I wonder if the treshold for OVERLAY can
> be changed (through setting DisplayObject's
> alpha?) or if it's always at 50%?
>
> Regards
> 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 overColor:uint = 0xFFCC00;
>    // this one still doesn't look good:
>    private var downColor:uint = 0xFF6666;
>    private var upColor: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 Sprite {
>    private var bgColor:uint;
>    private var size:uint;
>
>    public static const SHADOW:GlowFilter =
>        new GlowFilter(0x000000, 1.0, 4, 4, 1, 1, false, false);
>
>    private static const GLOW:GlowFilter =
>        new GlowFilter(0xFFFFFF, 0.8, 40, 40, 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:int   = (color >> 16) & 0xFF;
>            var green:int = (color >> 8) & 0xFF;
>            var blue:int  = color & 0xFF;
>
>            red += modifier;
>            if (red > 0xFF)
>                red = 0xFF;
>            else if (red < 0)
>                red = 0;
>
>            green += modifier;
>            if (green > 0xFF)
>                green = 0xFF;
>            else if (green < 0)
>                green = 0;
>
>            blue += modifier;
>            if (blue > 0xFF)
>                blue = 0xFF;
>            else if (blue < 0)
>                blue = 0;
>
>            return (red << 16) | (green << 8) | blue;
>    }
>
>    private function draw():void {
>        var colors:Array = [brighten(bgColor, 120), bgColor];
>        var alphas:Array = [1, 1];
>        var ratios:Array = [0, 255];
>        var matrix:Matrix = new Matrix();
>        var overlay:Shape = new Shape();
>        matrix.createGradientBox(size * 4, size, Math.PI / 2, 0, 0);
>
>        graphics.beginGradientFill(GradientType.LINEAR, colors, alphas,
> ratios, matrix);
>        graphics.drawRoundRect(0, 0, size * 4, size, 4);
>
>        overlay.graphics.beginFill(0xFFFFFF, 0.6);
>        overlay.graphics.drawRoundRect(0, 0, size * 4, size / 3, 8);
>        overlay.graphics.endFill();
>        overlay.blendMode = BlendMode.OVERLAY;
>        addChild(overlay);
>
>        filters = [ SHADOW, GLOW ];
>    }
> }
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to