三次贝塞尔曲线的可视化操作(完善)

1、CubicBezier类

package  {
    import fl.motion.BezierSegment;
    import flash.geom.Point;
     import flash.display.Graphics;
    public class CubicBezier extends BezierSegment {
        public function CubicBezier(anchor1:Point, control1:Point, control2:Point, anchor2:Point)
       {
            if (anchor1 == null || control1 == null || control2 == null || anchor2 == null){
               trace("null object in CubicBezier constructor!");
           }
            super(anchor1, control1, control2, anchor2);
        }
        
        public function drawInto(g:Graphics):void
       {//I use distance here because I want the curve to always be smooth but you may want to optimize this calculation.
           var iterations:uint = Point.distance(a,d);
            var newPoint:Point;
 
            for (var i:uint; i < iterations; i++)
            {
                newPoint = this.getValue(i/iterations);
                g.lineTo(newPoint.x, newPoint.y);
            }
        }
    }
   
}

调用:

var path:CubicBezier;
 
path = new CubicBezier(anchorPoint1, controlPoint1, controlPoint2, anchorPoint2);
   ?.graphics.moveTo(anchorPoint1.x,anchorPoint1.y);
path.drawInto(line.graphics);

2、控制柄思路

两个mc,另建两个点数组分别存放左右控制点到所在点的偏移量。利用循环找出是哪点激活,得出index利用偏移就可绘出控制柄。移动时判断是点还是控制点被拖动。是点的话就让控制点跟着动,是控制点就计算偏移(mousedown)。

3、载入图片

 var file:FileReference=new FileReference();
      var loader:Loader=new Loader();
      private function onClick(e:MouseEvent):void
      {
          file.browse([new FileFilter("Images(*.jpg;*.jpeg;*.png;*.gif)","*.jpg;*.jpeg;*.png;*.gif")]);
          file.addEventListener(Event.SELECT,onSelect);
      }
      private function onSelect(e:Event):void
      {
          file.load();
          file.addEventListener(Event.COMPLETE,onComplete);
          file.removeEventListener(Event.SELECT,onSelect);
      }
      private function onComplete(e:Event):void
      {
          file.removeEventListener(Event.COMPLETE,onComplete);
          loader.loadBytes(file.data);
          loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete);
      }
      private function onLoadComplete(e:Event):void
      {
          var tempData:BitmapData=new BitmapData(loader.width,loader.height,
                                                     false,0xFFFFFFFF);
          tempData.draw(loader);
          var bitmap:Bitmap=new Bitmap(tempData);
          tp.addChild(bitmap);
          loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,
                                                     onLoadComplete);
      } 

载入的图片放在Mc中,通过滑块控制大小(scalex)。

4复制需要的图片

绘制的图片作蒙板。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值