用Graphics的 drawPath 来画曲线(2)--可拖动 控制 变形的贝塞尔曲线
来源:互联网 发布:nodejs 商城源码 编辑:程序博客网 时间:2024/05/16 17:22
可以拖动 控制的 曲线:
代码如下:
package{import flash.display.GraphicsPathCommand;import flash.display.Sprite;import flash.events.MouseEvent;public class drawCurveLine0 extends Sprite{public function drawCurveLine0(){super();lineContainer=new Sprite();addChild(lineContainer);anchorContainer=new Sprite();addChild(anchorContainer);anchorVector.push(200, 200); //起点anchorVector.push(250, 100); //控制点1anchorVector.push(300, 200); //节点2anchorVector.push(400, 250); //控制点2anchorVector.push(300, 300);anchorVector.push(250, 400);anchorVector.push(200, 300);anchorVector.push(100, 250);anchorVector.push(200, 200);commandVector.push(GraphicsPathCommand.MOVE_TO);commandVector.push(GraphicsPathCommand.CURVE_TO); //样式:曲线commandVector.push(GraphicsPathCommand.CURVE_TO);commandVector.push(GraphicsPathCommand.CURVE_TO);commandVector.push(GraphicsPathCommand.CURVE_TO);//创建控制点按钮 anchorVector的长度是18,共有9个点 //例如 第3个点的 x坐标:anchorVector[3*2], y坐标:anchorVector[3*2+1]var numOfAnchor:uint=anchorVector.length / 2;for (var i:uint=0; i < numOfAnchor; i++){var color:uint=(i % 2) ? 0x0000FF : 0xFF0000;//索引为奇数的是控制点 画成蓝色var anchor:Anchor=new Anchor(i, color);anchor.x=anchorVector[i * 2];anchor.y=anchorVector[i * 2 + 1];anchor.addEventListener(MouseEvent.MOUSE_DOWN, anchor_MouseDownHandler);anchor.addEventListener(MouseEvent.MOUSE_UP, anchor_MouseUpHandler);anchorContainer.addChild(anchor);}//画线 lineDraw();}private var anchorContainer:Sprite; //控制点容器private var anchorVector:Vector.<Number>=new Vector.<Number>(); //节点数组private var commandVector:Vector.<int>=new Vector.<int>(); //线型数组private var currentAnchor:Anchor; //当前选中控制点private var lineContainer:Sprite; //曲线画布/** *根据节点和线型 重绘 * */ public function lineDraw():void{lineContainer.graphics.clear();lineContainer.graphics.lineStyle(0, 0x000000);lineContainer.graphics.drawPath(commandVector, anchorVector); //画路径lineContainer.graphics.endFill();}/** *鼠标选中控制点,启动控制点的拖动,触发move事件从而重画曲线*/private function anchor_MouseDownHandler(event:MouseEvent):void{currentAnchor=Anchor(event.target);currentAnchor.startDrag();stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);}private function anchor_MouseUpHandler(event:MouseEvent):void{currentAnchor.stopDrag();stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);}/** 鼠标拖动控制点时重画 */private function mouseMoveHandler(e:MouseEvent):void{var idx:uint=currentAnchor.idx;anchorVector[idx * 2]=currentAnchor.x;anchorVector[idx * 2 + 1]=currentAnchor.y;lineDraw(); }}} import flash.display.Sprite;class Anchor extends Sprite {public function Anchor(idx:uint, color:uint=0xFF0000){_idx=idx;graphics.beginFill(color, 0.5);graphics.drawCircle(0, 0, 10);graphics.endFill();buttonMode=true;}private var _idx:uint;public function get idx():uint{return _idx;}}
- 用Graphics的 drawPath 来画曲线(2)--可拖动 控制 变形的贝塞尔曲线
- 用Graphics的 drawPath 来画曲线(1)
- C#中定义可拖动的曲线控件(支持Gamma曲线)
- 创建双边偏置曲线(通过TOGGLE控件来控制是否保留原来的曲线)
- N个控制点的贝塞尔曲线
- UIBezierPath画曲线控制点的选取
- GDI+画曲线外型的变形文字(可用于图形验证码)
- 贝塞尔曲线的应用
- 高效的贝塞尔曲线
- 贝塞尔曲线的应用
- 贝塞尔曲线的实现
- 贝塞尔曲线的应用
- 贝塞尔曲线的使用
- 怎么用U3D画 平滑曲线(贝塞尔曲线)
- 用VB实现工业控制的实时曲线和历史曲线
- 动画曲线的加速度曲线
- android音量的控制曲线的计算方法
- Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍
- actionscript 字符串 全部替换
- actionscript 读取 文本 配置文件
- Actionscript里的进制及编码转换
- 太逗了 不得不藏 “郭德纲绝句,没有一句不让你笑的”
- 用Graphics的 drawPath 来画曲线(1)
- 用Graphics的 drawPath 来画曲线(2)--可拖动 控制 变形的贝塞尔曲线
- 提升您Flex应用性能 (转)
- 提升您Flex应用性能 --重绘(转)
- Flex中取得Image图像原始大小
- 如何利用FLASH 10的GPU加速功能
- flex (actionscript)用 swf 实现 动态类库(dll)
- 项目导入后flex development css 找不到图片的问题
- 创建一个away3d的flex library 项目
- 我都笑出眼泪了。。。