您的位置: 首页 > 技术文档 > 多媒体制作 > AS3自写类整理笔记:Dot类
Silverlight制作逐帧动画 回到列表 AS3自写类整理笔记:类的分包处理
 AS3自写类整理笔记:Dot类

作者:iamsun1550 时间: 2008-04-22 文档类型:原创 来自:蓝色理想

第 1 页 Dot类 [1]
第 2 页 Dot类 [2]

举例:

上面的flash展示源代码:

import index.base.geom.Dot;
import index.base.events.DotEvent;

var po1:Dot = new Dot(0,0,true);
var po2:Dot = new Dot(0,0,true);
po1.bind(p1,true);
po2.bind(p2,true);

po1.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
po2.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);

function dotChangeFun(e:DotEvent):void{
  te.text = "物体1坐标:" + po1.x + "," + po1.y;
  te.appendText("\n物体2坐标:" + po2.x + "," + po2.y);
  te.appendText("\n两点之间距离:" + po1.from(po2));
  te.appendText("\n所形成的角度:" + po1.angle(po2));
  te.appendText("\n物体1所在象限:" + po1.quadrant(new Dot,false));
  te.appendText("\n物体2所在象限:" + po2.quadrant(new Dot,false));
  te.appendText("\n物体1对于物体2在象限:" + po2.quadrant(po1));
}

p1.addEventListener(MouseEvent.MOUSE_DOWN,p1MouseDownFun);
p2.addEventListener(MouseEvent.MOUSE_DOWN,p2MouseDownFun);

function p1MouseDownFun(e:MouseEvent):void{
  p1.startDrag();
  stage.addEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}

function p1MouseUpFun(e:MouseEvent):void{
  p1.stopDrag();
  stage.removeEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}

function p2MouseDownFun(e:MouseEvent):void{
  p2.startDrag();
  stage.addEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}

function p2MouseUpFun(e:MouseEvent):void{
  p2.stopDrag();
  stage.removeEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}

下面是类的源代码:

package index.base.geom{
 
  import flash.events.EventDispatcher;
  import flash.display.DisplayObject;
 
  import index.base.events.DotEvent;
 
  public class Dot extends EventDispatcher{
   
    private var _x:Number;
    private var _y:Number;
    private var dis:DisplayObject;
   
    public var isListen:Boolean;
   
    public function Dot(x_:Number = 0,y_:Number = 0,_isListen:Boolean = false){
      _x = x_;
      _y = y_;
      isListen = _isListen;
    }
   
    //绑定DisplayObject
    public function bind(_dis:DisplayObject,isInTime:Boolean = false):void{
      dis = _dis;
      updata();
      if(isInTime) dis.addEventListener("enterFrame",enterFrameFun);
    }
   
    //帧频繁事件
    private function enterFrameFun(e:Object):void{
      if(_x != dis.x) x = dis.x;
      if(_y != dis.y) y = dis.y;
    }
   
    //更新xy数据
    public function updata():void{
      if(dis != null){
        _x = dis.x;
        _y = dis.y;
      }
    }
   
    //计算该点与另外一点的距离
    public function from(_dot:Dot,isQuadrant:Boolean = false):Number{
      updata();
      var num:Number = Math.sqrt(Math.pow(_dot.x - _x,2) + Math.pow(_dot.y - _y,2));
      if(!isQuadrant) num = Math.abs(num);
      return num;
    }
   
    //计算该点与另外一点所形成的线段与水平线的夹角,按顺时间计算
    public function angle(_dot:Dot,isRadian:Boolean = false):Number{
      updata();
      var numx:Number = _dot.x - _x;
      var numy:Number = _dot.y - _y;
      var num:Number = Math.atan(numy/numx);
      if(!isRadian) num = num * 180 / Math.PI;
      return num;
    }
   
    //返回当前点处在另外一点的哪个象限中 或 返回另外一点处在当前点的哪个象限中
    public function quadrant(_dot:Dot,isMaster:Boolean = true):int{
      updata();
      if(_x == _dot.x || _y == _dot.y){
        return 0;
      }
     
      var num:int;
      var p1:Boolean = (_x - _dot.x) > 0;
      var p2:Boolean = (_y - _dot.y) > 0;
      num = isMaster ? (p1 ? (p2 ? 2 : 3) : (p2 ? 1 : 4)) : (p1 ? (p2 ? 4 : 1) : (p2 ? 3 : 2));
     
      return num;
    }
   
    //返回该点距0点的距离
    public function get length():Number{
      updata();
      var num:Number = Math.sqrt(Math.pow(_x,2) + Math.pow(_y,2));
      return num;
    }
   
    //清除显示对象
    public function clear():void{
      dis = null;
    }
   
    //改变X坐标
    public function set x(num:Number):void{
      _x = num;
      if(dis != null) dis.x = num;
      if(isListen) dispatchEvent(new DotEvent(DotEvent.DOT_CHANGE,true));
    }
   
    //设置X坐标
    public function get x():Number{
      updata();
      return _x;
    }
   
    //改变Y坐标
    public function set y(num:Number):void{
      _y = num;
      if(dis != null) dis.y = num;
      if(isListen) dispatchEvent(new DotEvent(DotEvent.DOT_CHANGE,true));
    }
   
    //设置Y坐标
    public function get y():Number{
      updata();
      return _y;
    }
  }
}

事件类的代码:

package index.base.events{
 
  import flash.events.Event;
 
  public class DotEvent extends Event{
   
    public static const DOT_CHANGE:String = "dotChange";
   
    public function DotEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false){
      super(type,bubbles,cancelable);
    }
  }
}

经典论坛交流
http://bbs.blueidea.com/thread-2842487-1-1.html

本文链接:http://www.blueidea.com/tech/multimedia/2008/5706.asp 

出处:蓝色理想
责任编辑:bluehearts

上一页 Dot类 [1] 下一页

◎进入论坛RIA设计与应用版块参加讨论

相关文章 更多相关链接
AS3自写类整理笔记:ByteLoader类
FLASH小游戏开发 第三节
Flash P2P 通信技巧(AS-Java-AS)
FLASH小游戏开发 第二节
AS3自写类整理笔记:类的分包处理
作者文章
AS3自写类整理笔记:ByteLoader类
AS3自写类整理笔记:类的分包处理
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
悟道web标准:前端性能优化
纯中文域名".中国"今日提交申请
世界之窗3.0皮肤设计大赛结果公布
使用jQuery制作滑动动画效果的层
如何设计网页横幅
Plump 图标设计
Subrat Nayak图标设计
百度知道推出文档分享服务
CSS Sprites(CSS雪碧):要还是不要?
UIRSS三周年纪念日推出V2公测版
栏目最新 栏目最新列表
Firefox的Jetpack扩展案例分析
阿里妈妈UED谈CSS Sprites技术
Photoshop中设计绿色时尚Web网站
操作Dom节点实现间歇滚动新闻
浏览器15年历史回顾
如何创建Firefox的Jetpack扩展
全透视:CSS Z-index 属性
用PS 3D工具绘制甜麦圈包装袋
悟道Web标准:让W3C标准兼容终端
悟道WEB标准:统一思想,遵循标准
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《Flash短片轻松学》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容

Initial View 双生子日记星座卡 公寓类地产站 仙谷运用 服装人像摄影 我的学习 写实绘画风格--蔬菜篇 弄哪儿了?