要添加或不添加孩子?用Flash

时间:2010-07-12 14:54:07

标签: flash actionscript-3

我正面临着一个我理解有问题的情况......

我正在编写一个带有自己解决方案的拖放游戏。游戏从第1帧开始,帧150的解决方案。

为了显示解决方案,我选择在原始位置显示所有拖动项目并逐个淡出它们,同时在正确位置的另一个实例中同时淡出。

在“游戏”部分,我确保将所有拖动的项目添加回舞台,以确保拖动不会传递到其他可拖动对象后面。所以在我的拖动功能结束时,我添加了行“this.parent.parent.addChild(this.parent)”。

我感到困惑的是,当我点击解决方案按钮时,所有拖动的实例都保持不变,不再响应时间轴操作。如果我取出“this.parent.parent.addChild(this.parent)”位,一切正常(除了能够拖到其他对象后面)

有人可以向我解释这种行为吗?

TIA


嗯......我想我说的太快了!

我的方案如下: 我在舞台的第一层放置了5个 choice MC的实例。 选项 MC包含 dragButton MC(映射到其自己的类)的实例和 choiceText MC的实例看起来像:


[dragButton] choiceText


目的是让用户将 dragButton MC拖到 choiceGroup MC 的特定实例之上。

为了确保任何拖动的项目超过任何其他项目,我添加了

this.parent.parent.addChild(this.parent);

在dragButton的拖动功能结束时。这样可以重新添加包含所选 dragButton 选项 MC。

经过进一步测试后,我意识到对象被添加到正确的“容器”中,但不再与时间轴首选项“链接”。

这发生在“更正”区域,我淡出选项,然后在其预期位置淡入另一个实例。但是,“淡入淡出”(Classic Tween)并没有抓住任何已经重新添加到舞台上的MC。

是否有一种解决方法可以解决我的“淡入/淡出”代码,而不是使用时间轴补间?

TIA

1 个答案:

答案 0 :(得分:1)

听起来您将拖动的实例添加到错误的父级。在actionscript中,您可以获取任何对象并将其重新分配给任何父对象。因此,您需要查找它真正需要附加到哪个父级。

如果将子MC(MovieClip)添加到另一个父CD中,该MC在视觉上低于其他父剪辑,那么它也将低于其他父剪辑。通过作为新父MC的内部组件,它继承父级的z-index,无论父级位于何处。

我建议在操作面板中查看“插入目标路径”命令。

它允许您导航到要从一个父级重新连接到另一个父级的剪辑,然后查看它推荐的路径。

您可能会惊讶于从一个MC(MovieClip)到另一个MC的路径实际......

此外,通过使用该长度的时间轴,您实际上可能导致正确的父级从舞台“消失”,因为它位于不包含正确标记的MC的关键帧上,并且可能导致任何代码附加到它没有加载。

我不确定你在游戏中是怎么做的,所以这些都只是猜测......