Flex 3:碰撞后碰撞检测和移动物体

时间:2011-05-10 17:17:59

标签: flex collision

我正在创建一个计划应用程序,它在2周的日历时间轴上显示项目(包含在画布中)。如果用户决定将项目移动一天,我需要检查并查看移动项目是否会与任何其他现有项目重叠。如果是这样,两个项目中的一个需要沿y轴向下移动,直到两个项目不再重叠。

我创建了一个循环通过用于创建项目的转发器项的函数...此函数的最终结果是一个包含的arrayCollection:

0. the id number within the repeater
1. the project title
2. x coordinate
3. y coordinate
4. the width of the project
5. the height of the project

我还创建了一个函数,它接收数组集合中的两个对象,并确定它们是否重叠。

但是,我不能找出一个贯穿数组集合的工作循环,比较其中的每个项目,检查它们是否重叠,如果项目重叠则移动项目,然后继续进入下一个项目。

另外,我需要确保移动一个项目不会使它与另一个项目重叠。

有什么想法吗?

修改

想出来...... 每次移动任何项目时,我最终都必须将每个元素y值重置为0,然后重新评估它们是否发生碰撞。

1 个答案:

答案 0 :(得分:1)

由于项目的性质,这很难回答,因为每次互动和你想要完成的事情都是不同的。

话虽如此,如果是我,我会尝试采用完全数据驱动的方法。有一个“项目日历”对象,它存储它需要的所有信息(主要是开始和结束时间戳,因为它们是通用的),然后将它放在一个有意义的数据结构中,无论是数组还是双序列表中的顺序时间表。

从那里开始,限制数据下一个(或上一个)项目的开始和结束时间之间的移动。您需要一个自定义组件才能将时间戳转换为用户可表示的内容。

我过去做过类似的事情,至少可以说这不是一件容易的事。祝你好运。