效果如下:
说明:点击上面的蓝色按钮可以画出各种柄图,点击柄图中不同色块可以观看效果。
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,r).x,getRPoint(_x0,_y0 + _h,_a,_b,r).y);
r+= step;
}
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
//
g.endFill();
//画内侧面
g.beginFill(drakColor,_alpha);
g.moveTo(_x0,_y0+_h);
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
g.lineTo(getRPoint(_x0,_y0,_a,_b,minR).x,getRPoint(_x0,_y0,_a,_b,minR).y);
g.lineTo(_x0,_y0);
g.endFill();
//画外侧面
g.beginFill(drakColor,_alpha);
g.moveTo(_x0,_y0+_h);
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
g.lineTo(_x0,_y0);
g.endFill();
//画外弧侧面
g.beginFill(drakColor,_alpha);
//g.lineStyle(1);
g.moveTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
g.lineTo(getRPoint(_x0,_y0,_a,_b,minR).x,getRPoint(_x0,_y0,_a,_b,minR).y);
r=minR;
while (r + step < maxR) {
r+= step;
g.lineTo(getRPoint(_x0,_y0,_a,_b,r).x,getRPoint(_x0,_y0,_a,_b,r).y);
}
g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
while (r - step > minR) {
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,r).x,getRPoint(_x0,_y0 + _h,_a,_b,r).y);
r-= step;
}
g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
g.endFill();
//画上表面
g.beginFill(_colorList[j],_alpha);
g.moveTo(_x0,_y0);
r=minR;
while (r + step < maxR) {
g.lineTo(getRPoint(_x0,_y0,_a,_b,r).x,getRPoint(_x0,_y0,_a,_b,r).y);
r+= step;
}
g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
g.endFill();
}
}
private function onMouseDownX(e:MouseEvent):void {
var TG:MovieClip=e.target as MovieClip;
var posX:int=getRPoint(0,0,D,D,TG.r).x;
var posY:int=getRPoint(0,0,D,D,TG.r).y;
if (TG.x==0 || TG.y==0) {
TG.removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
var tween1=new Tween(TG,"x",Bounce.easeOut,0,posX,1,true);
var tween2=new Tween(TG,"y",Bounce.easeOut,0,posY,1,true);
tween1.addEventListener(TweenEvent.MOTION_FINISH,onMotionFinish);
} else {
TG.removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
var tween3=new Tween(TG,"x",Bounce.easeOut,TG.x,0,1,true);
var tween4=new Tween(TG,"y",Bounce.easeOut,TG.y,0,1,true);
tween3.addEventListener(TweenEvent.MOTION_FINISH,onMotionFinish);
}
}
private function onMotionFinish(e:TweenEvent):void {
var TG:MovieClip=e.currentTarget.obj as MovieClip;
TG.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
}
private function getDarkColor(color:uint):uint {
var r:uint=color >> 16 & 0xFF / 1.3;
var g:uint=color >> 8 & 0xFF / 1.3;
var b:uint=color & 0xFF /1.1;
return r << 16 | g << 8 | b;
}
private function getRPoint(x0:Number,y0:Number,a:Number,b:Number,r:Number):Object {
r=r * Math.PI / 180;
return {x:Math.cos(r) * a + x0,y:Math.sin(r) * b + y0};
}
public function get contain():Object {
return __contain;
}
}
}