2013-03-24 86 views
0

在我的游戏中,我有一个有许多身体的太阳系,他们都是相同的班级/电影剪辑,他们的大小是由他们的质量决定的。当分配目标时,目标成为身体的一个孩子。身体移向目标,达到目标时被移除。如何阻止孩子加入父母的大小?

这种方法是非常重要的,因为它意味着可以设置航点并且目标可以绕太阳系运行:因为目标周围的一切都在移动,它还需要移动以保持相对运动,否则最终会出现在错误的地方。

问题是远处的目标使得身体的边界框变大并且身体缩小以适应所需的尺寸。我需要的是让目标的位置不会影响身体的大小,但我找不到所需的方法/属性,并且visible = false没有做到这一点。如果有人有一个很好的解决方案。

+2

简而言之,你不能,DisplayObject的高度和宽度不能小于它的内容,它的子节点。从视觉上来说,可以使用遮罩来在边界框外不显示对象,但.width和.height仍然会大于该框。你可以做的一件事是,根据你一直想要的visible = false/true,不要addChild()这些子元素直到它们可见为止(所以addChild()将设置visible = true)。您可以在http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e0b.html – 2013-03-24 20:35:45

+0

中阅读有关屏蔽的信息。我尝试了这种方法,但它没有解决:我需要将主体的大小更新为他们合并和分裂,虽然我确实找出了一个我之前没有想到的简单解决方案: 不是设置高度和宽度,而是设置比例并将其分开或者在适当的情况下乘以50(多少像素宽图形是)。 – Ashton 2013-03-24 22:16:49

+0

@LarsBlåsjö你错了。使用includeInLayout = false;将导致指向的对象不被包含在父代大小计算中。 – 2013-03-25 16:19:39

回答

1

我相信includeInLayout可以帮助你做到这一点。 visible = false不会显示对象,但它仍然用于布局计算。 includeInLayout = false将从布局计算中移除对象。

+0

谢谢!这太好了 – Ashton 2013-03-25 17:51:47

+1

啊..我发现includeInLayout只适用于Flex,但是我在上面提到的评论的缩放方法奏效。 – Ashton 2013-03-26 16:09:12