【问题标题】:Actionscript 3: Buttons always on top?Actionscript 3:按钮总是在顶部?
【发布时间】:2016-06-23 09:01:56
【问题描述】:

我正在开发一个小游戏。所以我的主时间线需要 4 层。在底层是一个带有一些按钮的影片剪辑。在上面的两层中,还有用于效果和动作的影片剪辑,顶部的图层用于动作脚本。层的顺序是预期的。

当我测试它时,我无法点击任何按钮,因为它们上方肯定有电影剪辑。动作脚本中是否有可能说所有按钮始终位于顶部?

【问题讨论】:

    标签: actionscript-3 flash button movieclip


    【解决方案1】:

    您可以通过设置 parent.setChildIndex(childObject, i) 来更改 z-index。设置一个非常高的索引以确保它始终在顶部

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/all-index-Z.html

    【讨论】:

    • 谢谢!我将尝试更改 z-index。
    • 但要小心!一旦您操作了源自时间线的对象的父级 (setChildIndex/AddChild/AddChildAt),该对象将不再受时间线的影响。它会一直停留在屏幕上,直到它的父时间线被删除,或者您使用removeChild 明确删除它。关键帧不会删除它。
    • 为什么要改变z-index?通过重用 addChild 方法,您不必关心索引?您甚至不需要测试 numChildren 属性。
    【解决方案2】:

    您还可以在每次将新的 DisplayObject / DisplayObjectContainer 添加到您的一个按钮上时调用 addChild...

    如果您的按钮按如下方式存储在 Vector 中:

    var buttons:Vector.<SimpleButton> = new Vector.<SimpleButton>();
    

    你有一个类似 setButtonsOnTop 的函数

    function setButtonsOnTop():void{
        for(var i:uint=0;i<buttons.length;i++){
            addChild(buttons[i]);
        }
    }
    

    在按钮上添加内容时调用该函数。

    setButtonsOnTop();
    

    所以按钮总是在其他 DisplayObjects 之上...

    要删除按钮,您可以通过添加“removeButtons”方法来做到这一点:

    function removeButtons():void{
        for(var i:uint=0;i<buttons.length;i++){
            removeChild(buttons[i]);
        }
    }
    

    所以这样你就不用关心索引值了。

    【讨论】:

    • 也可以在event.ADDED触发时调用setButtonsOnTop()方法...
    • 听起来不错。谢谢你,战术,我会努力解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多