快速业务通道

[碰撞实现\数学实现非mc检测]

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13


今次发1个用于实现各种碰撞的组件,和扩展和使用这个组件的代码。
按此在新窗口浏览图片
恩- -以前发过1个低版本的,今次更新1下最新的~~。。 首先看个演示吧:
点击浏览该文件
http://www.Flash8.net/bbs/UploadFile/2005-6/2005612112544406.swf 例子中是4种不同的碰撞模型:hitArea检测,ball,plane,point
文件包

点击浏览该文件 包内物品简介- -:
例子文件包括example.fla example.swf 组件文件reflector.swc 类声明包为目录xp 4个组件应用代码和付赠1块LOGO
reflector组件中包装了用于实现碰撞的基类xp.gameLib.reflect.Reflector(和其他很多个class- -) xp.gameLib.reflect.Reflector实现了追踪检测的目标,纪录数据等功能,而碰撞检测的具体功能由用户编写自己的代码实现。这次的dd里包含了4个已经实现好的比较常用的碰撞:
点对hitArea的碰撞检测;
点对球形物体的碰撞;
点对平板的碰撞;
点对点的碰撞; 分别对应4个as文件:
HitAreaReflector.as
ArcReflector.as
PlaneReflector.as
PointReflector.as
碰撞模型简介
和上次发的东西类似,碰撞的使用不需要用户进行更多的操作,只需要处理由reflector发出的事件即可。 点对hitArea的碰撞适用于很少的环境,因为reflector设计的目标是精确的碰撞计算,使用hitArea就失去了意义。这里只是给个例子。。= = 点对球的碰撞中,ArcReflector创建了1个圆形的区域,并计算运动的点与这个园的碰撞,并根据结果发出相应的事件。 点对平面的碰撞中,PlaneReflector创建1个条线来检查穿过这条线的运动的点。 点对点的碰撞中,PointReflector创建1个有1定有效范围的点,来检测运动的点与它的碰撞 数学计算虽然增加了精确度,但也使程序变慢。这几个模型适用于碰撞较少的场合,支持超高速运动而不会发生穿过的情况。
使用组件的代码范例
包内的as文件是组件的实用示例。这个组件没有提供什么实际功能,只是包装几个class的功能。虽然放在场景中也会显示出参数面板。。。- -。表被迷惑。。 组件包装的主要的1个类是xp.gameLib.reflect.Reflector,也就是我们需要继承的类。其他还有很多零碎。 每个as文件都是1个类,他们都继承于xp.gameLib.reflect.Reflector,每个类需要实现2个主要的函数来实现碰撞功能:
collisionCalculate
被系统调用,用于计算碰撞,参数给出了待检测的点的信息,用户实现这个函数计算碰撞,并需要返回1个boolean值表示是否发生了碰撞。
update
更新数据用。当系统需要更新数据时,调用这个函数。
可以翻看包内的几个as文件,具体用法后面说。。
使用方法:
由于实现这个组件的代码比较分散,所以用组件的形式包装了所有需要用到的类,10分类似于jar文件呢~~
  • 将reflector.swc拷贝到C:\Documents and Settings\xp\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Components
    目录下,并在component面板上reload组件,可以看到reflectorBaseClass这个组件,说明可以正常使用。
  • 新建1个fla文档,将reflectorBaseClass组件拖入场景中,并删除。这时它会保存在库中,并在发布时存在于swf中,组件中的类就都可以在这个swf中使用了~。
btw,不只是class,其实也可以制作1个组件,来保存as1格式的全局函数/变量:在组件symbol的#initclip段内向_global写入的函数/变量,会和class一样会保存在_global里面,swf中可以直接调用这些全局函数;这样就做了1个编译好的函数库,发布也比include要快很多~~。推荐ox什么的as1饭司用介个哈= =。。
  • 然后新建1个as类文件,来实现具体的碰撞功能。可以参考包中给出的4个例子。都是经过测试的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号