【问题标题】:Draw sprites between layers在图层之间绘制精灵
【发布时间】:2011-08-10 04:03:40
【问题描述】:

是否可以在特定图层上在影片剪辑上绘制精灵?

我有一个我在 Flash 设计器中创建的 MC,它上面有 3 层,背景、一些布局内容,然后是一些文本。在 actionscript 中,我在代码中创建了一个 Sprite 对象,在其上绘制了一个矩形,并使用 addChild(从 MC 中调用)将其添加到舞台

问题是,精灵总是被绘制在我在设计器中添加的所有布局内容之上。

有没有办法在特定层将精灵添加到 MC 中?在本例中为背景层。

我尝试更改精灵上的 z,但没有效果。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    更改“z”是一个不错的尝试,但它不会做任何事情。

    实际上,所有影片剪辑都是按特定顺序堆叠的。当有画出来时,它是按这个顺序完成的,就像画家用新的图形覆盖图形一样。更改“z”值将更改该影片剪辑的感知深度,但不会更改影片剪辑的绘制顺序。由于您的精灵位于所有影片剪辑的顶部,因此即使您更改“z”,它也将始终是最后一个要绘制的。

    在使用 ActionScript 时,“层”实际上并不存在。这是一个只能通过 Flash Professional 获得的概念。最后,Flash Professional 在 addChild() 请求中转换其图层。

    因此您可以使用 addChildAt() 方法放置新的影片剪辑。索引值为 0 时,新影片剪辑将绘制在所有其他影片剪辑的下方,而不是顶部。

    您必须找到引用影片剪辑的索引(例如,通过在 Flash Pro 中给它一个实例名称,“reference”),以便您可以使用“getChildIndex(reference)”检索它的索引。然后,您可以使用 addChildAt() 将您的新影片剪辑设置在该索引之上或之下。如果您设置与引用的影片剪辑相同的索引,它将在它的下方。

    另一种技术可能是创建一种您在 Flash Professional 中的图层中设置的虚拟影片剪辑(“dummy”),然后使用“dummy.addChild()”将新影片剪辑添加到此虚拟影片剪辑中”。

    如果您想通过 ActionScript 在一个“层”中重新组合多个图形,以便使用 addChildAt() 在显示列表中轻松上下移动组,可以将它们添加到 Sprite 对象中,然后移动 Sprite。

    【讨论】:

    • 好的,但在我的例子中,'Game' MC 有 3 层,第一层有一个 png 位图对象,第二层有多个用于布局的 png 位图对象,第三层有一些文本字段对象。由于图层上的这些东西都不是 MC,我可以使用 addChildAt(sprite,0) 将精灵放在背景图层中吗? (在布局层的东西下面)
    • 好的,我明白了。使用纯图像时可能会出现一些问题:由于 Flash Pro 在内部进行管理,我们无法为它们指定实例名称,也无法轻松获取它们的子索引。无论如何,您可以放置​​ addChildAt(sprite,0) 但它会在后台。使用 addChildAt(sprite,1) 将您的精灵放在背景前面可能会更好。但是,您必须知道,如果它们之间没有 MovieClip,Flash Pro 有时会合并原始图像。一种解决方法是在 MovieClip 中转换您的图像:它们将具有真正的子索引,就像其他 MovieClip 一样。
    • 是的,我将我想在后面绘制的布局转换为 MC。所以它的索引现在是 1,背景和其他布局 bmp 是索引 0。如果我在索引 1 处绘制精灵,它似乎可以工作,并且布局 mc 充当掩码。谢谢!
    【解决方案2】:

    将舞台上所需的对象转换为影片剪辑。这些影片剪辑可能位于不同的图层上。然后使用函数 setChildIndex()、swapChildrenAt() 和 getChildIndex() 来达到所需的效果。如果您向我展示代码,我可以发表更多评论。有关功能的更多详细信息,请参见

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html

    也可以看看http://www.flashandmath.com/intermediate/depths/index.html

    【讨论】:

      【解决方案3】:

      使用 addChildAt (sprite, index); 位于该索引处的对象将上升一级。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-13
        相关资源
        最近更新 更多