我的头靠在墙上。我不想重新发明轮子。
PopupButton的默认Flex 3类是两个按钮的组合。一个是带有标签和/或图标的普通按钮,第二个是打开弹出窗口的箭头。
我在这里的斗争是,我只想要一个带有图标的按钮,可以直接打开弹出窗口,而无需再次编写所有弹出处理代码。计划是用一个名为SimplePopupButton的新类覆盖PopupButton类。这个类只是隐藏箭头,并指向按钮单击处理程序以打开弹出窗口。
看起来很简单,但我没有看到一个简单的方法来做到这一点。建议?替代?
[编辑]我想要一个16x16图标按钮,打开一个弹出窗口。随flex附带的PopupButton有两个按钮:“它包含一个主按钮和一个辅助按钮,称为弹出按钮,当用户单击弹出按钮时会弹出任何UIComponent对象。” (source)。我想要主按钮打开弹出窗口,然后隐藏弹出按钮。 (反之亦然)
答案 0 :(得分:3)
您是否尝试过设置new skin?不确定它是否会起作用但是比尝试编写新控件要容易得多。
答案 1 :(得分:1)
在Flex 3.4中,PopUpButton控件有一个名为“openAlways”的属性,如果设置为true,则允许主按钮也打开popUp。然后,如前所述,只需设置按钮的外观以隐藏向下箭头。
答案 2 :(得分:0)
自从我与Flex合作以来已经有一段时间了,但这是我的想法:
创建一个由经典按钮和列表组成的新组件。该组件应具有两种视图状态。该列表不应在基本状态中可见,但在组件进入另一个状态时应该可见。当然,另一个状态是点击按钮进入的。您可以将列表设置为最初定位,以使其左下角与按钮的左下角对齐。然后创建从基本状态到另一个状态的转换,这将使列表像在标准PopuButton控件中一样“向下滑动”。您可以通过同时使用擦除效果和移动效果来执行此操作,在该移动效果中,您可以在y轴上移动列表,直到它的左上角位于左下角的位置。将组件命名为MyPopupButton或您想要调用它的任何名称。要返回基态,只需对这些效果进行反转即可。
至于处理代码 - 您的应用程序当然只需要知道用户从列表中选择了什么,因此不再需要代码。
希望这有用。
答案 3 :(得分:0)
答案 4 :(得分:0)
尝试找到的弹出属性 here。它应该设置为弹出窗口。
print(</mx:Script>
<![CDATA[
import mx.controls.Alert;
public var myAlert:Alert = new Alert();
]]>
</mx:Script>
<mx:popUpButton popUp="{myAlert}" label="Button"/>
);
答案 5 :(得分:0)
这是一个设计师黑客,但我只是在我的popUp按钮上设置了以下属性...(或者你可以创建一个样式,如果你想重用)
假设你只想要一个16x16的图标来点击菜单时弹出一个菜单......
<mx:PopUpButton icon="@Embed(source='pathToIcon.png')" arrowButtonWidth="16" paddingLeft="0" paddingRight="0" width="16" height="16" popUp="{menu}"/>
答案 6 :(得分:0)
。
.camButtons
{
padding-left:0;
padding-right:1;
up-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControlsOver");
over-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
down-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
disabled-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
pop-up-up-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControlsOver");
pop-up-down-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
pop-up-over-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
}
<mx:PopUpButton width="38" popUpGap="0" paddingLeft="37" arrowButtonWidth="38" id="flirts_btn" popUp="{flirts_menu}" styleName="camButtons" icon="@Embed(source='/assets/images/skins.swf', symbol='Icon_WinkOver')" downIcon="@Embed(source='/assets/images/skins.swf', symbol='Icon_WinkOver')" disabledIcon="@Embed(source='/assets/images/skins.swf', symbol='Icon_Wink')" toolTip="Send Flirt to User" buttonMode="true" useHandCursor="true" />
....重要的部分......
pop-up-up-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControlsOver");
pop-up-down-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
pop-up-over-skin: Embed(source="/assets/images/skins.swf", symbol="Button_ChatRoomControls");
width="38" popUpGap="0" paddingLeft="37" arrowButtonWidth="38"