[此文来源于互联网,牛C网只负责收集整理]
看看效果吧:
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()
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()
复制粘贴就有效果。
作者:gdgzboy@牛C网
地址:http://www.niuc.net/post/1935/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
牛C网推荐您再看看以下日志:
Flash AS中很实用的缓动函数
Flash教程-用AS实现右键菜单的最简单方法
用Flash AS3制作常见的柄图动画效果
Flex 2- 打开下一代富互联网应用之门
面向Flash AS初学者的实例教程-单选题
Flash教程-轻松实现多个MC自动连播
Flash DateChooser 组件传值给Html来制作时间选择效果
Flash制作雪花视觉动画效果的三种制作方法
汇总知识-Flash中常用的几个JS语句
Flash AS2 事件处理机制
Flash AS中很实用的缓动函数
Flash教程-用AS实现右键菜单的最简单方法
用Flash AS3制作常见的柄图动画效果
Flex 2- 打开下一代富互联网应用之门
面向Flash AS初学者的实例教程-单选题
Flash教程-轻松实现多个MC自动连播
Flash DateChooser 组件传值给Html来制作时间选择效果
Flash制作雪花视觉动画效果的三种制作方法
汇总知识-Flash中常用的几个JS语句
Flash AS2 事件处理机制
Flash AS教程-分类说明Flash中数组的用法
Flash AS实例教程-用纯AS制作的钟表动画





