快速业务通道

Flash教程:二次贝塞尔曲线实例

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-07

实在抱歉,是二次贝塞尔曲线,不是一次杯赛儿曲线。o(╯□╰)o
鼠标拖动划线,然后拖动变成曲线。 前天在天地会看到一朋友说,想要先画一条线,然后可以随意拖动这条线,然后我就想到了二次贝塞尔曲线,真是个好东东,于是就做了个实例,一来给那位朋友帮个忙,二来我博客也好久没更新AS相关的东东了,呵呵... 这里只贴出来BezierLine的代码,要是想看整个实例的源码,在最下面有链接下载的。废话少说,上代码:
BezierLine: packagecn.lite3.display
{
importFlash.display.Sprite;
importflash.events.MouseEvent;
/**
*lite3@qq.com
*www.lite3.cn
*@authorlite3
*/
publicclassBezierLineextendsSprite
{
//终点坐标
privatevarendX:Number;
privatevarendY:Number;

privatevarcenterX:Number;
privatevarcenterY:Number;

//控制点坐标
privatevar_controlX:Number;
privatevar_controlY:Number;

//线条样式属性
privatevar_thickness:Number;
privatevar_color:uint;
privatevar_pixelHinting:Boolean;
privatevar_scaleMode:String;
privatevar_caps:String;
privatevar_joints:String;
privatevar_miterLimit:Number;


publicfunctionBezierLine(beginX:Number,beginY:Number,endX:Number,endY:Number)
{
this.endX=endX-beginX;
this.endY=endY-beginY;
setStyle(3);
graphics.lineTo(this.endX,this.endY);
x=beginX;
y=beginY;
centerX=this.endX/2;
centerY=this.endY/2;

this.buttonMode=true;
this.useHandCursor=true;

addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
}

/**
*设置线条样式
*@paramthickness
*@paramcolor
*@paramalpha
*@parampixelHinting
*@paramscaleMode
*@paramcaps
*@paramjoints
*@parammiterLimit
*/
publicfunctionsetStyle(thickness:Number,color:uint=0,alpha:Number=1,pixelHinting:Boolean=false,scaleMode:String="normal",
caps:String=null,joints:String=null,miterLimit:Number=3):void
{
_thickness=thickness;
_color=color;
this.alpha=alpha;
_pixelHinting=pixelHinting;
_scaleMode=scaleMode;
_caps=caps;
_joints=joints;
_miterLimit=miterLimit;
drawLineByControlPoint(controlX,controlY);
}

/**
*划线贝塞尔曲线
*@paramcontrolX
*@paramcontrolY
*/
publicfunctiondrawLineByControlPoint(controlX:Number,controlY:Number):void
{
_controlX=controlX;
_controlY=controlY;

graphics.clear();
graphics.moveTo(0,0);
graphics.lineStyle(_thickness,_color,1,_pixelHinting,_scaleMode,_caps,_joints,_miterLimit);
graphics.curveTo(controlX,controlY,endX,endY);

}
/**控制点X*/
publicfunctiongetcontrolX():Number{return_controlX;}

/**控制点Y*/
publicfunctiongetcontrolY():Number{return_controlY;}

publicfunctiongetthickness():Number{return_thickness;}
publicfunctionsetthickness(value:Number):void
{
if(_thickness!=value)
{
_thickness=value;
drawLineByControlPoint(_controlX,_controlY);
}
}

publicfunctiongetcolor():uint{return_color;}
publicfunctionsetcolor(value:uint):void
{
if(_color!=value)
{
_color=value;
drawLineByControlPoint(_controlX,_controlY);
}
}

publicfunctiongetpixelHinting():Boolean{return_pixelHinting;}
publicfunctionsetpixelHinting(value:Boolean):void
{
if(_pixelHinting!=value)
{
_pixelHinting=value;
drawLineByControlPoint(_controlX,_controlY);
}
}

p

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号