Quantcast
Channel: TM's Workspace » ActionScript
Viewing all articles
Browse latest Browse all 10

ボタンの習作を作ってみた。(2) #AS3

$
0
0

 昨日に引き続き、AS3でボタンの習作を作ってみました。
 これまで、あまりFilterは使ったことがなく、各Filterの効果の違いとか、あまりわかっていなかったのですが、だいぶ理解が進んだ気がします。

 
 
 
 
 
 

20100110

Alternative content

Get Adobe Flash player


package practice 
{
	import flash.display.Sprite;
	import frocessing.color.ColorHSV;

	[SWF(width = "475", height = "475", backgroundColor = "0x000000", fps = "30")] 
	public class Button02 extends Sprite{
		
		public function Button02() {
			var xx:Number = 0;
			var yy:Number = 80;
			var c:uint = 0x000000;
			var r:Number = 0;
			var hsv:ColorHSV = new ColorHSV();
			hsv.s = hsv.v = 1.0;
			hsv.h = 0;
			for (var i:int = 0; i < 25; i++) {
				if (i > 0) {
					hsv.h = (hsv.h +15) % 360;
					c = hsv.value;
				}
				var b:Button = new Button(32, c, 1.0, 0.4);
				xx = xx + 80;
				if (xx > 400) {
					xx = 80;
					yy += 80;
				}
				b.x = xx;
				b.y = yy;
				addChild(b);				
			}
		}	
	}

}
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BevelFilter;
import flash.filters.BitmapFilterType;
import flash.filters.BlurFilter;
import flash.filters.DropShadowFilter;
import flash.filters.GlowFilter;
import flash.filters.GradientGlowFilter;
class Button extends Sprite {
	private var o:OuterButton;
	
	public function Button(r:Number,color:uint,alpha0:Number,alpha1:Number):void {
		o = new OuterButton(r);
		addChild(o);
		var b:BaseButton = new BaseButton(r, color, alpha0, alpha1);
		addChild(b);
		addEventListener(MouseEvent.ROLL_OVER, over);
		addEventListener(MouseEvent.ROLL_OUT, out);
		addEventListener(MouseEvent.MOUSE_DOWN, down);
		addEventListener(MouseEvent.MOUSE_UP, up);
	}
	
	private function over(e:MouseEvent):void {
		o.onMouse = true;
	}
	
	private function out(e:MouseEvent):void {
		o.onMouse = false;
	}
	
	private function down(e:MouseEvent):void {
		o.isPress = true;
	}
	
	private function up(e:MouseEvent):void {
		o.isPress = false;
	}
}

class OuterButton extends Sprite {
	private var rad:Number;
	private var ct:Number=0;
	private var glow:GlowFilter;
	public var onMouse:Boolean = false;
	public var isPress:Boolean = false;
	
	public function OuterButton(r:Number):void {
		rad = r;
		addEventListener(Event.ENTER_FRAME, draw);
		glow = new GlowFilter(0xffffff, 0.7, 16, 16, 2, 1, false, false);
		filters = [glow];
	}
	
	private function draw(e:Event):void {
		graphics.clear();
		graphics.lineStyle(1, 0xeeeeee);
		graphics.beginFill(0xeeeeee, 0.9);
		graphics.drawCircle(0, 0, rad);
		graphics.endFill();
		var b:Number;
		if (isPress || !onMouse) {
			if (ct < 180) {
				ct += (0 - ct) * 0.1;				
			}else {
				ct += (360 - ct) * 0.1;
			}
			b = 30 * Math.abs(Math.sin(ct / 180.0 * Math.PI))+16;
			glow.blurX = glow.blurY = b;
			filters = [glow];
		}else if (onMouse) {
			ct = (ct + 4) % 360;
			b = 30 * Math.abs(Math.sin(ct / 180.0 * Math.PI))+16;
			glow.blurX = glow.blurY = b;
			filters = [glow];
		}
	}
	
}

class BaseButton extends Sprite {
	private var rad:Number;
	private var bevel:BevelFilter;
	private var color:uint;
	private var alpha0:Number;
	private var alpha1:Number;
	private var glow:GradientGlowFilter;
	
	public function BaseButton(r:Number, c:uint, a0:Number, a1:Number):void {
		rad = r;
		color = c;
		alpha0 = a0;
		alpha1 = a1;
		bevel = new BevelFilter(4, 45, 0x888888, 1, 0x111111, 1, 4, 4, 1, 1, BitmapFilterType.INNER, false);
		glow = new GradientGlowFilter(4, 90, [color, 0xffffff, color], [0.9, 0.8, 0.6], [0, 10, 255], 32, 32, 1, 1, BitmapFilterType.INNER, false);
		filters = [bevel, glow];
		addEventListener(Event.ENTER_FRAME, draw);
	}
	
	private function draw(e:Event):void {
		graphics.clear();
		graphics.lineStyle(1, 0x222222);
		graphics.beginFill(0x000000, alpha0);
		graphics.drawCircle(0, 0, rad);
		graphics.beginFill(color, alpha1);
		graphics.drawCircle(0, 0, rad);
		graphics.endFill();
	}
	
}

Viewing all articles
Browse latest Browse all 10

Trending Articles