Flash AS代码实例:仿贝塞尔曲线控制

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

AS代码如下:

//这个函数是用来绘制线条的

function connect(){

this.clear()

this.lineStyle(3,0x660000,100)

this.moveTo(anchorOne._x,anchorOne._y)

this.curveTo(controlOne._x,controlOne._y,anchorTwo._x,anchorTwo._y)

updateAfterEvent()

}

//这个函数是用来绘制替代描点跟控制点的MC,就绘制一个正方形吧

function createSquare(handle,side,offset){

if(offset==undefines){

offset=0

}

with(handle){

moveTo(offset,offset)

lineTo(offset,side)

lineTo(side,side)

lineTo(side,offset)

lineTo(offset,offset)

endFill()

}

}

//这是用来控制描点跟控制点的移动,并且用延时,间隔一段时间调用一次绘制线条

function setDraggable(handle){

handle.onPress=function(){

clearInterval(_global.refreshScreen)

_global.refreshScreen=setInterval(this._parent,"connect",10)

this.startDrag(false)

}

handle.onRelease=function(){

clearInterval(_global.refreshScreen)

this.stopDrag()

}

handle.onReleaseOutside=function(){

clearInterval(_global.refreshScreen)

this.stopDrag()

}

}

//建立描点

anchorOne=createEmptyMovieClip("anchorPoint1",this.getNextHighestDepth())

anchorOne._x=anchorOne._y=50

//填充

anchorOne.beginFill(0xcccccc,100)

//样式

anchorOne.lineStyle(0,0x000000,100,false,false,"none","miter",2)

//调用函数绘制成正方形

createSquare(anchorOne,8,-8)

//调用后方可拖动

setDraggable(anchorOne)

//另一个描点

anchorTwo=createEmptyMovieClip("anchorPoint2",this.getNextHighestDepth())

anchorTwo._x=anchorTwo._y=250

anchorTwo.beginFill(0xcccccc,100)

anchorTwo.lineStyle(0,0x000000,100,false,false,"none","miter",2)

createSquare(anchorTwo,8,-8)

setDraggable(anchorTwo)

//控制点

controlOne=createEmptyMovieClip("control1",this.getNextHighestDepth())

controlOne._x=anchorTwo._x

controlOne._y=anchorOne._y

controlOne.beginFill(0xcccccc,100)

controlOne.lineStyle(0,0x000000,100,false,false,"none","miter",2)

createSquare(controlOne,8,-8)

setDraggable(controlOne)

//最后让线条一开始就显示出来

connect()

复制粘贴到到吗层,测试即可看到效果。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航