加入收藏 | 网站地图
主页 > Flash >

Flash AS3教程:大量对象的碰撞测试教程

2013-04-11 10:49 来源:网络 对此文章感兴趣的有:

  Flash Player 10中的ActionScript比之前的版本运行速度更快,这就允许我们可以一次做更多工作,而且可以同时移动更多对象。但是限制仍然存在。如果开始在屏幕上移动大量对象,速度迟早会变得越来越慢。大量对象之间的碰撞检测更会引发问题,因为每一个对象都需要与其他各个对象进行比较。这一点并不仅限于碰撞检测,任何包含大量对象而且对象相互之间需要交互(如通过重力或群落〉的粒子系统或游戏〈参见第2章〉都会遇到同样的问题。

  如果只有6个相互作用的对象,每个对象则需要与其他的每一个对象结对,并完成碰撞测试、重力吸引或所需的任何动作。乍一看,这意味着需要6X6共36次单独比较,但其实并非如此。正如<

  AB. AC. AD. AE. AF

  BC.BD.BE.BF

  CD. CE. CF

  DE.DF

  EF

  注意, B不必再检查A,因为A 己经与B做过碰撞检查。达到E时,己经检查过除F以外的所有对象。而在此之后, F 已经得到了所有其他对象的检查。下面是所需实际比较次数的计算公式,这里N是对象个数:

  (N2 -N) /2

  对于6个对象,则计算为(36 - 6) /2 ,即15.

  对于10个对象,则是000-10) /2 ,即45次检查。

  20个对象意味着190次检查, 30个对象将是435次检查!

  可以看到,检查次数会飞速增长,因此需要采取一些措施来加以限制。用ActionScript 3.0在屏幕上移动100个对象并不太困难,但是如果开始进行碰撞检测或者对象间的另外一些比较,就需要完成4950次单独的检查!如果使用基于距离的碰撞检测,这就意味着需要计算4950次两个对象之间的距离。如本章前面所述,如果使用位图碰撞,这就需要完成4950次下述过程t 清除两个位图,绘制两个对象,并调用hi tTest方法。每一帧都是如此!这势必导致SWF文件速度的下降。


更多

我要学设计

1.请认真填写您的姓名,专业,联系方式(我们将严格为您保密)

2.您提交信息后24小时内,网站客服人员会与您确认信息;

3.48小时内,给您推荐的三家软件培训学校会电话与您沟通,约定好时间及会面地点;

4.培训老师与您进行沟通,为您推荐适合您的软件培训课程;

5.恩施培训网在线报名网址:点击进入网上报名系统

6.恩施培训网官方报名网址:www.enshipx.com