1

我需要一些输入。在 Flash Builder 中实现自定义按钮的最佳(推荐)方法是什么?

我所说的自定义按钮的意思是,我需要展示例如一栋有 5 层楼的建筑物(在 3d 视图中)。然后用户可以单击每个楼层,以更新主视图以显示当前选择的楼层。

在前面的示例中,我只是在图像下方添加了一个不可见层,其中每个按钮(每个楼层)都包含一种纯色。单击图像会触发一个检查选择什么颜色的功能,然后触发我想要的操作。

有没有更好的方法来做到这一点?

也许导入与主应用程序通信的外部 SWF 以发送楼层切换命令?(并不是说我知道如何从导入的外部 SWF 与主应用程序进行通信,只是反过来)。

任何输入都会很棒=)

谢谢!

4

3 回答 3

3

编辑

在您提出问题后,我迅速整理了一些东西来表明按钮可以是任何形状。如果您希望楼层是可选的,那么您可能想要 a ToggleButton,而不是 aButton所以我重新设计了我的示例,结果就是您所描述的

在此处输入图像描述

为什么不使用 Flex 4.0 蒙皮功能?您可以使用自己的外观/感觉获得按钮组件的行为(和状态):

<s:ToggleButton skinClass="FloorButton" y="0"  />
<s:ToggleButton skinClass="FloorButton" y="25" />
<s:ToggleButton skinClass="FloorButton" y="50" />

FloorButton使用一些图像定义按钮皮肤 ( ):

<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
                   alpha.disabledStates="0.5">

    <fx:Metadata>
    <![CDATA[ 
        [HostComponent("spark.components.ToggleButton")]
    ]]>
    </fx:Metadata>

    <s:states>
        <s:State name="up" />
        <s:State name="over" stateGroups="overStates" />
        <s:State name="down" stateGroups="downStates" />
        <s:State name="disabled" stateGroups="disabledStates" />
        <s:State name="upAndSelected" stateGroups="selectedStates, selectedUpStates" />
        <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
        <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
        <s:State name="disabledAndSelected" stateGroups="selectedUpStates, disabledStates, selectedStates" />
    </s:states>

    <s:Path data="M 0 0 L 20 20 L 40 0 L 40 20 L 20 40 L 0 20">
        <s:fill>
            <s:SolidColor color="#AAAAAA" color.selectedStates="#000000" color.over="#777777" />
        </s:fill>
    </s:Path>

</s:SparkButtonSkin>

当然,可以将路径替换为具有透明度的PNG,以达到类似的效果。

于 2012-05-21T12:43:38.310 回答
0

当您使用 flex 时,为什么不使用 flex 组件并为它们蒙皮?

于 2012-05-21T12:40:03.347 回答
0

教程介绍如何在 Flex 4 中进行按钮蒙皮,逐步完成该过程。

Flex 4 还支持易于实现的3d 效果(您在问题中提到过)。

于 2012-05-21T13:22:57.683 回答