zoukankan      html  css  js  c++  java
  • ActionScript3(AS3)类库学习之(六)——用Point和Rectangle进行计算

    Point和Rectangle都是flash.geom包里的类,在DisplayObject的方法中经常会被用到,他们本身也提供了一些方法能进行点,矩形间的基本操作。Point和Rectangle提供的一些计算函数完全可以用在程序中替换自己用Math类进行的计算。

    一.Point
    用来表示一个点
    1.构造和设置

    var pt1:Point = new Point(10, 20);
    var pt2:Point = new Point();
    pt2.x = 30;
    pt2.y = 40;
    var pt3:Point = pt1.clone();
    var pt4:Point = new Point();
    pt4.copyFrom(pt2);
    pt4.setTo(100,100);


    2.点的相关计算
    Point类提供了丰富的方法,可以根据点做各种运算。
    a.比较两点是否相等
    pt1.equals(pt2);


    b.两点和
    var pt5:Point = pt4.add(pt1);


    c.两点差
    var pt6:Point = pt4.subtract(pt1);


    d.移动一定位置
    pt4.offset(2,2);


    e.计算点到原点(0,0)距离
    var len:Number = pt1.length;


    f.计算两点距离
    var distance:Number = Point.distance(pt1, pt2);


    g.将极坐标转变为普通(笛卡尔)坐标
    var pt7:Point=Point.polar(len,angle);
    相当于
    pt7.x = len*Math.cos(angle);
    pt7.y = len*Math.sin(angle);


    h.按线段长度缩放坐标
    pt6.normalize(len);
    相当于
    var oldlen:Number = pt6.length;
    pt6.x = pt6.x * len / oldlen;
    pt6.y = pt6.y * len / oldlen;


    i.根据给定的比例来计算两点间的中间一点
    var pt8:Point = Point.interpolate(pt1, pt2, 0.7);
    相当于
    pt8.x = pt1.x * 0.7 + pt2.x * 0.3;
    pt8.y = pt1.y * 0.7 + pt2.y * 0.3;

    二.Rectangle
    用来表示一个矩形对象
    1.构造和设置

    var rect1:Rectangle = new Rectangle(0, 0, 100, 100);
    var rect2:Rectangle = new Rectangle();
    rect2.x = 10;
    rect2.y = 10;
    rect2.size = new Point(20, 20);
    var rect3:Rectangle = rect1.clone();
    rect3.copyFrom(rect2);
    rect3.setTo(30, 30, 50, 50);
    rect3.setEmpty();



    2.矩形的属性

    Rectangle具有下面的属性,上图能很清晰的看出这些属性的意思,改变某些属性,其他一些相关的属性也会相应的改变。

    x:就是区域的左上角x坐标。
    y:就是区域的左上角y坐标。
    区域的宽
    height:区域的高
    top:区域的顶,其实就是y
    bottom:区域的底,其实就是y+height
    left:区域左边缘,其实就是x
    right:区域右边缘,其实就是x+width
    topLeft:左上角的位置。
    rightBottom:右下角的位置。
    size:记录了区域的长宽的point对象

    3.矩形的相关计算

    a.矩形是否为空
    rect1.isEmpty();


    b.矩形内是否包含某点
    rect1.contains(1, 2);
    rect1.containsPoint(new Point(1, 2));


    c.矩形是否相等
    rect1.equals(rect2);


    d.是否完全覆盖某矩形
    rect1.containsRect(rect2);


    e.判断矩形是否相交
    rect1.intersects(rect2);


    f.移动矩形
    rect2.offset(dx, dy);
    相当于
    rect2.offsetPoint(new Point(dx, dy));
    相当于
    rect2.x += dx;
    rect2.y += dy;


    g.扩展矩形的大小
    rect2.inflate(dx, dy);
    相当于
    rect2.inflatePoint(new Point(dx, dy));
    相当于
    rect2.x -= dx;
    rect2.width += 2 * dx;
    rect2.y -= dy;
    rect2.width += 2 * dy;

    h.计算两矩形的相交矩形和相合矩形
    var rect4:Rectangle = rect2.intersection(rect3);


    var rect5:Rectangle = rect2.union(rect3);

    注:文中图片都来自adobe



    作者:Jingle Guo
    出处:http://www.cnblogs.com/studynote/
    若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    bootstrap-datetimepicker使用记录
    Highcharts使用====一些问题记录
    值类型 引用类型
    java 发送邮件
    包括post,get请求(http,https)的HttpClientUtils
    整理的java的日期DateUtil
    oracle随机取数据
    oracle查询表的索引
    有关dwr推送的笔记
    java 超经漂亮验证码
  • 原文地址:https://www.cnblogs.com/studynote/p/2999361.html
Copyright © 2011-2022 走看看