2012-05-21 105 views
1

我需要一些输入.. 在Flash Builder中实现自定义按钮的最佳方式(以及推荐)是什么?Flex AS3 - 自定义按钮

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

在前面的例子中,我简单地在图像下面添加了一个不可见的图层,其中每个按钮(每个楼层)都包含一个纯色。点击图像会触发一个函数来检查选择的颜色,然后触发我想要的操作。

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

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

任何输入都会很棒=)

谢谢!

回答

3

编辑

你的问题后,我很快就刮起了证据,表明是按钮可以是任何形状的。如果你想在地板可以进行选择,那么你可能需要一个ToggleButton,不是Button所以我重新工作我的例子了一下,结果是你所描述的

enter image description here

为什么不使用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替换以实现类似的效果。

+0

感谢您的回答。是否有可能使按钮“非方形”?我需要使用从3D侧视图看到的5层楼。并能够点击其中的任何一个。 –

+0

是的。你可以让你的按钮任何你想要的形状。 –

+0

喜欢这个。每个楼层都是一个触发BG更改的按钮。 我会看看你的代码=) http://i48.tinypic.com/vytc92.jpg –

0

当你使用flex的时候,为什么不使用flex组件并为它们蒙皮呢?

0

This有关如何在Flex 4中执行按钮蒙皮的教程将逐步完成该过程。

Flex 4还可以轻松实现3d effects(您在您的问题中提到过)。

+0

我认为这是我现在使用的v4 =)我会通读文章! 谢谢 –

+0

我跟着你发布的教程,但命中区域总是一个矩形。我需要将3-6个按钮堆叠在一起(每个按钮看起来像建筑物的一层)。有任何想法吗?我会再次通过上述帖子,看看我是否错过了一些东西。 –

+0

我不认为我可以添加到Brian Genisio的更新答案。它非常棒,可以帮助你创造你想要的外观。 –