ActionScript编程简单碰撞检测

上传人:m**** 文档编号:122027825 上传时间:2022-07-20 格式:DOC 页数:5 大小:26.50KB
返回 下载 相关 举报
ActionScript编程简单碰撞检测_第1页
第1页 / 共5页
ActionScript编程简单碰撞检测_第2页
第2页 / 共5页
ActionScript编程简单碰撞检测_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
ActionScript 编程 简单碰撞检测作用: 检测影片中各种对象在运动时发生的碰撞,并执行相应的指令。说明: 碰撞检测是虚拟物体之间交互作用的基础,是动画制作中最基本 的问题。在 2D 动画中,可以将碰撞检测视为两个平面几何体之间相交 的判断。在 Flash 和 ActionScript 中,判断物体是否碰撞有两种方法, 即判断对象与点的碰撞以及对象与对象的碰撞。1对象与对象的碰撞显示对象(DisplayObject)类提供了 hitTestObject()方法来检测对 象与对象的碰撞,并返回一个逻辑(Boolean)型数据,实现碰撞结果 的判断,如下所示。DisplayObjectl.hitTestObject(DisplayObject2)在上面的代码中,DisplayObjectl和DisplayObject2均为需要进行 碰撞检测的显示对象。当两个对象发生碰撞时,上面的代码将返回true, 否则,则返回false。为保证碰撞检测的即时型,通常需要将碰撞检测 放到时间轴事件中,随帧的播放而执行。2对象与点的碰撞除了对象和对象的碰撞外,ActionScript还允许用户对对象和点的 碰撞进行检测。这就需要使用显示对象(DisplayObject)类的 hitTestPoint()方法,通过设置hitTestPoint()方法的3个参数,决定碰撞 对象时是否使用形状检测,如下所示。DisplayObject.hitTestPoint(x,y,ShapeFlag); 在上面的代码中,各关键词的含义如下所示。 DisplayObject需要进行碰撞检测的对象 x碰撞点的水平坐标 y 碰撞点的垂直坐标 ShapeFlag 判断碰撞检测的显示对象类型。x 和 y 参数指定舞台的坐标空间中的点,而不是包含显示对象的显示对象容器中的点,除非显示对象容器是舞台。当设置 ShapeFlag 参数为true时,碰撞检测将检测对象的实际像素,而其参数为false时, 则检测对象的边框像素。示例:例如,在舞台中分别创建实例名称为“mcl”和“mc2”的影片剪 辑元件,这两个元件可为任意形状。然后,使用hitTestObject()方法检 测这两个元件是否发生碰撞,代码如下所示。mcl.addEventListener(MouseEvent.MOUSE_DOWN,startdrag);使在mc1实例上按下鼠标即可拖动该实例mc1.addEventListener(MouseEvent.MOUSE_UP,stopdrag);使在mc1实例上放开鼠标即可拖动该实例function startdrag(event:MouseEvent):voidevent.target.startDrag(); 开始拖动function stopdrag(event:MouseEvent):voidevent.target.stopDrag(); 停止拖动 addEventListener(Event.ENTER_FRAME,checkhit);处理侦听enterFrame事件,并调用checkhit()函数function checkhit(event:Event):voidif (mc1.hitTestObject(mc2)测试mc1实例和mc2实例是否发生碰撞trace(发生碰撞);elsetrace(没有碰撞);在上面的代码中,使用Event类中的target属性用来指定事件目标, 即mc1实例。当对mc1实例触发鼠标按下事件时,Sprite类的startDrag() 方法将允许用户拖动指定的 mc1 实例,该实例将一直保持可拖动,直 到通过调用stopDrag()方法来停止;当对mc1实例触发鼠标放开事件时,调用stopDrag()方法来结束startDrag()方法,即停止拖动。使用hitTestPoint()方法可以方便地检测对象是否和某个点发生碰 撞。例如,在舞台中创建一个实例名称为“me”的不规则圆形(缺少 一部分)以及用来显示结果的txt动态文本,然后使用hitTestPoint()方 法检测鼠标光标是否与该对象发生碰撞,以及可发生碰撞的范围,代 码如下所示。var flag:Boolean;指示是否使用形状检测stage.addEventListener(MouseEvent.CLICK,shapeflag);处理侦听鼠标单击事件,并调用shapeflag()函数this.addEventListener(Event.ENTER_FRAME,checkhit);处理侦听enterFrame事件,并调用checkhit()函数function shapeflag(event:MouseEvent):voidflag=!flag; 切换检测方式function checkhit(event:Event):voidif(mc.hitTestPoint(this.mouseX,this.mouseYflag)检测鼠标光标是否在mc实例中txt.text=发生碰撞;elsetxt.text=没有碰撞;运行上面的代码,把鼠标移向me实例的缺口处,可以发现鼠标与 圆形边框的实际像素层叠或相交时即发生碰撞;而在舞台上单击鼠标 后,再把鼠标移向mc实例的缺口处,可以发现只有与圆形的实际像素 层叠或相交时才发生碰撞。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!