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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Flash教程:二次贝塞尔曲线实例的所有评论