TrackBarButton:
package
{
import flash.display.GradientType;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BitmapFilter;
import flash.filters.BitmapFilterQuality;
import flash.filters.ColorMatrixFilter;
import flash.filters.DropShadowFilter;
import flash.filters.GlowFilter;
import flash.geom.Matrix;
/**
* 摄量条按钮类
* @author Jave.Lin
*/
public class TrackBarButton extends Control
{
private var _isDowned:Boolean=false;
private var _isOnClickShake:Boolean=true;
private var _brightFilter:ColorMatrixFilter;
private var _glowFilter:GlowFilter;
private var _dropShawFilter:DropShadowFilter;
private var _filtersArr:Array=[];
public override function set width(value:Number):void
{
if(width!=value)
{
_w=_h=value;
refreshBackground();
}
}
public override function set height(value:Number):void
{
if(height!=value)
{
_w=_h=value;
refreshBackground();
}
}
public function TrackBarButton()
{
super();
}
public function setWidthHeight($width:Number,$height:Number):void
{
_w=$width;
_h=$height;
refreshBackground();
}
protected override function initialize():void
{
_w=_h=10;
var matrix:Array = new Array();
//反色
// matrix = matrix.concat([-1, 0, 0, -.1, 255]); // red
// matrix = matrix.concat([0, -1, 0, -.1, 255]); // green
// matrix = matrix.concat([0, 0, -1, -.1, 255]); // blue
// matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
matrix = matrix.concat([1, 0, 0, -.4, 0]); // red
matrix = matrix.concat([0, 1, 0, -.4, 0]); // green
matrix = matrix.concat([0, 0, 1, -.4, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
_brightFilter=new ColorMatrixFilter(matrix);
_glowFilter=new GlowFilter(0xffff00,.3,3,3,3);
var color:Number = 0;
var angle:Number = 45;
var alpha:Number = 0.8;
var blurX:Number = 3;
var blurY:Number = 3;
var distance:Number = 3;
var strength:Number = 1;
var inner:Boolean = false;
var knockout:Boolean = false;
var quality:Number = BitmapFilterQuality.HIGH;
_dropShawFilter=new DropShadowFilter(distance,
angle,
color,
alpha,
blurX,
blurY,
strength,
quality,
inner,
knockout);
_filtersArr.push(_dropShawFilter);
this.filters=_filtersArr;
if(stage)
{
onAddedToStageHandler();
}
else
{
addEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
}
}
private function addFilter(filter:BitmapFilter):void
{
var index:int=_filtersArr.indexOf(filter);
if(index==-1)_filtersArr.push(filter);
else
{
_filtersArr[index]=filter;
}
this.filters=_filtersArr;
}
private function removeFilter(filter:BitmapFilter):void
{
var index:int=_filtersArr.indexOf(filter);
if(index!=-1)_filtersArr.splice(index,1);
this.filters=_filtersArr;
}
private function onAddedToStageHandler(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
//默认抖动的
if(_isOnClickShake)
{
addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
}
}
private function onMouseUpHandler(e:MouseEvent=null):void
{
if(_isDowned)
{
_isDowned=false;
removeFilter(_brightFilter);
}
}
private function onMouseDownHandler(e:MouseEvent):void
{
if(!_isDowned)
{
_isDowned=true;
addFilter(_brightFilter);
}
}
public function onMouseOutHandler(e:MouseEvent):void
{
removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
onMouseUpHandler();
removeFilter(_glowFilter);
}
public function onMouseOverHandler(e:MouseEvent):void
{
removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
addFilter(_glowFilter);
}
private function onRemovedFromStageHandler(e:Event):void
{
removeEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
removeEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
}
protected override function refreshBackground():void
{
//绘制一个圆即可
this.graphics.clear();
var halfW:Number=_w/2;
var halfH:Number=_h/2;
this.graphics.lineStyle(1,0x224422,.8);
var times:Number=4;
// this.graphics.moveTo(halfW,0);
//
// var perAngle:Number=(Math.PI*2)/180;
// for (var i:int = 0; i < 180; i++)
// {
// this.graphics.lineTo(Math.cos(i*perAngle)*halfW,Math.sin(i*perAngle)*halfH);
// }
// this.graphics.beginFill(0xaaaaa);
// this.graphics.drawCircle(0,0,halfW);
// this.graphics.endFill();
var m:Matrix=new Matrix();
//渐变盒子的:大,小,角度,X位移,Y位移
m.createGradientBox(_w*times,_h*times,0,-_w*1.1*times/2,-_h*1.1*times/2);
this.graphics.beginGradientFill(GradientType.RADIAL,[0xffffff,0xffffff,0xaaffaa],[1,.8,.4],[0,15,63],m);
this.graphics.drawCircle(0,0,halfW);
this.graphics.endFill();
}
}
}
TrackBarRuler类:
package
{
/**
* 跟踪条的尺寸类
* @author Jave.Lin
*/
public class TrackBarRuler extends Control
{
public override function set width(value:Number):void
{
if(width!=value)
{
_w=value;
refreshBackground();
}
}
public override function set height(value:Number):void
{
if(height!=value)
{
_h=value;
refreshBackground();
}
}
public function TrackBarRuler()
{
super();
}
protected override function initialize():void
{
_w=100;
_h=10;
refreshBackground();
}
protected override function refreshBackground():void
{
this.graphics.clear();
this.graphics.lineStyle(.5);
this.graphics.beginFill(0,.4);
this.graphics.drawRect(0,(height/2-height/8),width,height/4);
this.graphics.endFill();
}
}
}
HorizontalTrackBar类:
package
{
import controlsEvents.TrackBarEvent;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* 水平跟踪条类(我自己认为是:摄量条)
* @author Jave.Lin
*/
public class HorizontalTrackBar extends Control
{
private var _isDrawBorder:Boolean=true;
private var _isDrawBackground:Boolean=true;
private var _trackBarRuler:TrackBarRuler;
private var _trackBarButton:TrackBarButton;
private var _curValue:int=0;//当前值
private var _minValue:int=0;//最小值
private var _maxValue:int=100;//最大值
private var _increment:int=5;//每次操作的增/减量
private var _minPos:Number;//滚动器最近的距离
private var _maxPos:Number;//滚动器最远的距离
private var _buttonW:Number=10;
private var _buttonH:Number=10;
public function get buttonW():Number
{
return _buttonW;
}
public function set buttonW(value:Number):void
{
if(_buttonW!=value)
{
_buttonW=value;
refreshBackground();
onLayout();
}
}
public function get buttonH():Number
{
return _buttonH;
}
public function set buttonH(value:Number):void
{
if(_buttonH!=value)
{
_h=_buttonH=value;
refreshBackground();
onLayout();
}
}
//是否绘制边框
public function get isDrawBorder():Boolean
{
return _isDrawBorder;
}
public function set isDrawBorder(value:Boolean):void
{
if(_isDrawBorder!=value)
{
_isDrawBorder=value;
refreshBackground();
}
}
//是否绘制背景
public function get isDrawBackground():Boolean
{
return _isDrawBackground;
}
public function set isDrawBackground(value:Boolean):void
{
if(_isDrawBackground!=value)
{
_isDrawBackground=value;
refreshBackground();
}
}
public function get maxValue():int
{
return _maxValue;
}
public function set maxValue(value:int):void
{
if(_maxValue!=value)
{
if(_minValue>value)throw new Error("HorizontalTrackBar maxValue less then minValue error! maxValue:"+value+" minValue:"+_minValue);
_maxValue=value;
if(curValue>_maxValue)curValue=_maxValue;
}
}
public function get minValue():int
{
return _minValue;
}
public function set minValue(value:int):void
{
if(_minValue!=value)
{
if(value>_maxValue)throw new Error("HorizontalTrackBar minValue more then maxValue error! minValue:"+value+" maxValue:"+_maxValue);
_minValue=value;
if(curValue
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?