2011-11-20 49 views
2

我在AS3和flex4上玩动画,而且我遇到了问题。我的应用程序是一个游戏板(如棋盘),其中每个字段都是添加到某个位置的边框容器。as3:制作动画

此外,我正在添加一个子元素(形状),鼠标点击此容器。我想要实现的是能够将形状从一个领域平滑地移动到另一个领域。但看起来这种形状落在相邻区域的这种方式http://screencast.com/t/iZ3DCdobs

我相信这是因为形状是特定的边界容器的子项,并使其在所有其他容器中可见,我需要以某种方式使用层....

,如果任何人都可以我会很高兴建议解决方案

回答

1

是的,你是对的。您应该将可移动对象添加到不同的图层。 由于AS中没有典型的图层,因此您可以尝试将一个精灵和任何其他对象中的字段拖放到另一个对象上,而不是将它们放在彼此上,以便在您移动对象时不会拖到其他对象之后对象。

如果你将两个精灵放在同一个位置,你仍然会在可移动的物体和场之间有准确的x,y位置。

1

你有两个选择:

第一个是有不同的层为您的DisplayObject:作为一个例子,在底层将持有的所有板和上层将持有所有的作品。

第二个选项是用swapChildren(),swapChildrenAt()setChildIndex()操纵对象的索引。所以要把一个MovieClip带到最顶端,你可以做MovieClip(parent).setChildIndex(this, 0);

0

如果情况是总是形状对象被隐藏在下一个(右侧)网格容器后面,我建议你创建相反的网格。

假设您正在创建一个国际象棋网格。那是一个8x8的网格。通常情况下,您可以使用2 for循环创建网格,从0到8循环,比如说第一个网格的x和y点从0,0开始并继续到结束。我建议你做的是从8,8到0,0创建。

Flash中的显示对象根据其子索引相互堆叠在一起。

例如:如果您创建两个对象。矩形和圆形如下

var rect:Rectangle = new Rectangle(); 
this.addChild(rect); 
var circ:Circle = new Circle(); 
this.addChild(circ); 

圆圈将永远是矩形的顶部在这种情况下,因为是圆矩形显示列表后添加。 因此,如果您反转网格的创建顺序,则右侧的网格单元格将首先添加到显示列表中,因此左侧的网格单元格将始终位于右侧的网格单元格之上。因此,您所面临的问题不会发生。